Просто попробуйте JHipster v6.0.1, следуя образцу приложения Blog (http://gist.asciidoctor.org/?github-mraible/jhipster5-demo//README.adoc). При выборе Gradle в качестве инструмента сборки с MariaDB в разработке и производстве задачи Liquibase не выполняются.
Устанавливаем среду разработки:
npm install -g yo
npm install -g generator-jhipster
Создайте новый каталог, blog
, перейдите в него и введите: jhipster
./gradlew
yarn start
Все отлично работает. Таблицы базы данных создаются и заполняются, как и ожидалось, и веб-приложение работает хорошо.
Теперь, когда я останавливаю сервер и пытаюсь запустить любую задачу liquibase, я получаю ту же ошибку. Например, запуск: ./gradlew liquibaseClearChecksums
в командной строке приводит к следующему результату:
> Task :liquibaseClearChecksums FAILED
During the build, one or more dependencies that were declared without a version failed to resolve:
org.mariadb.jdbc:mariadb-java-client:
Did you forget to apply the io.spring.dependency-management plugin to the blog project?
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':liquibaseClearChecksums'.
> Could not resolve all files for configuration ':liquibaseRuntime'.
> Could not find org.mariadb.jdbc:mariadb-java-client:.
Required by:
project :
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
1 actionable task: 1 executed
Stacktrace дает немного больше информации:
Could not resolve all files for configuration ':liquibaseRuntime'.
> Could not find org.mariadb.jdbc:mariadb-java-client:.
Required by:
project :
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':liquibaseClearChecksums'.
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':liquibaseRuntime'.
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException:
Could not find org.mariadb.jdbc:mariadb-java-client:.
Required by:
project :
Я получаю тот же результат в Windows 10 и Linux openSUSE 15. Однако при использовании Maven задачи liquibase работают нормально. Это только я? У кого-нибудь есть идеи, почему?
[JHipster: 6.0.1; JDK11; МарияДБ 10.3.14; узел v10.15.3; Пряжа v1.15.2; нпм v6.9.0; Грейдл v5.4.1]
PS: Удалил JHipster 6.0.1, затем установил v5.8.2 (npm install -g [email protected]
), повторил процесс, описанный выше, и задачи Liquibase Gradle работают! Я думаю, что это ошибка нового развертывания JHipster 6.0.1... Должен ли я/как мне сообщить об этом команде разработчиков? Есть идеи для временного исправления?
Также уделил время сравнению файлов build.gradle
из двух версий (5.8.2 и 6.0.1); они совершенно разные, и ничто не кажется мне явно неправильным, за исключением того, что версия 5.8.2 напрямую ссылается на плагин io.spring.dependency-management
, а версия 6.0.1 - нет...
У меня была такая же проблема, и я отключил кеш «cacheProvider no». Когда вы запускаете приложение, возникает еще одна проблема с кешем второго уровня, и я думаю, что это из-за драйвера БД. Я надеюсь помочь вам!
Хорошо! У меня есть решение...
Я добавил следующие +
строки в build.gradle
файл (начиная со строки 28):
id "org.sonarqube" version "2.7"
+ id "io.spring.dependency-management" version "1.0.7.RELEASE"
//jhipster-needle-gradle-plugins - JHipster will add additional gradle plugins here
}
sourceCompatibility=1.8
targetCompatibility=1.8
assert System.properties["java.specification.version"] == "1.8" || "11" || "12"
apply plugin: "org.springframework.boot"
+ apply plugin: "io.spring.dependency-management"
apply plugin: "propdeps"
Я выбрал io.spring.dependency-management
версию 1.0.7, потому что страница плагина Gradle указывает ее как последнюю версию (на момент написания).
Теперь я могу бежать ./gradlew liquibaseClearChecksums
с успешным результатом.
Запуск ./gradlew liquibaseDiffChangeLog
однако терпит неудачу. При включении stacktrace получаю следующую ошибку:
:liquibaseDiffChangeLog FAILED
liquibase-plugin: Running the 'main' activity...
Starting Liquibase at Tue, 21 May 2019 07:16:59 PDT (version 3.6.3 built at 2019-01-29 11:34:48)
Unexpected error running Liquibase: The option --referenceUrl is required.
liquibase.exception.CommandLineParsingException: The option --referenceUrl is required.
at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:1419)
at liquibase.integration.commandline.Main.doMigration(Main.java:1026)
at liquibase.integration.commandline.Main.run(Main.java:199)
at liquibase.integration.commandline.Main.main(Main.java:137)
Чтобы решить эту проблему, я копирую/вставляю параметр liquibase
/activities
/diffLog
referenceUrl
в раздел liquibase
/activities
/main
(см. следующую строку +
):
liquibase {
activities {
main {
driver "org.mariadb.jdbc.Driver"
url "jdbc:mariadb://localhost:3306/blog"
username "<username>"
password "<password>"
changeLogFile "src/main/resources/config/liquibase/master.xml"
defaultSchemaName ""
logLevel "debug"
classpath "src/main/resources/"
+ referenceUrl "hibernate:spring:org.jhipster.blog.domain?dialect=org.hibernate.dialect.MySQL5InnoDBDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy"
}
Теперь я могу бежать ./gradlew liquibaseDiffChangeLog
с успешным результатом. С этими изменениями я успешно протестировал обе задачи Liquibase в Linux и Windows 10.
Я один это замечаю? Неужели команда JHipster этого не заметила? Конфигурация JHipster/Gradle/liquibase не тестируется? Является ли мое исправление полным решением?
Может ли кто-нибудь, имеющий опыт работы с конфигурацией JHipster/Gradle/liquibase, дать некоторое представление/подтверждение...?
Просто продолжаю: новая версия JHipster (6.1.0) по-прежнему страдает от этой проблемы!
Новая версия JHipster (6.1.1) по-прежнему страдает от этой проблемы! Задачи JHipster/Gradle/MariaDB/liquibase не поддерживаются/не тестируются в JHipster? Я один это замечаю? PS: Вышеупомянутые изменения все еще работают, и с последней версией io.spring.dependency-management (1.0.8.RELEASE) @PascalGrimaud
JHipster 6.1.2 по-прежнему страдает от этой проблемы. @паскаль-гримо
JHipster 6.2.0 по-прежнему страдает от этой проблемы. @pascal-grimaud (приведенное выше решение все еще решает эту проблему.)
вы можете поднять проблему в соответствующем git-repo github.com/jhipster вместо того, чтобы комментировать здесь
JHipster 6.3.0 по-прежнему страдает от этой проблемы. @pascal-grimaud (приведенное выше решение все еще решает эту проблему.)
JHipster 6.3.1 по-прежнему страдает от этой проблемы. @pascal-grimaud (приведенное выше решение все еще решает эту проблему.)
Хорошо! Интересная разработка... Я только что протестировал новую версию v6.4.1, и liquibaseClearChecksums
появляется работает "из коробки" (т.е. вам не нужно добавлять никаких ссылок на io.spring.dependency-management
), ноliquibaseDiffChangeLog
ВСЕ ЕЩЕ требует копирования/ вставьте параметр liquibase
/activities
/diffLog
referenceUrl
в раздел liquibase
/activities
/main
.
Марко! Спасибо за ответ/предложение. Я снова повторил весь проект, на этот раз на вопрос: «Хотите ли вы использовать абстракцию кэша Spring?», я ответил «Нет» (тем самым отключив кеш 2-го уровня). После полной сборки/запуска (без проблем) задачи Liquibase по-прежнему не выполняются по той же причине, что и в моем посте, на всех платформах. (Хорошая идея с драйвером БД, но в моем случае я не могу представить, как драйвер БД повлияет на вещи, когда все работает с Maven. Я подозреваю, что в конфигурации Gradle чего-то не хватает...)