JHipster 6.0.1:Liquibase任务失败

时间:2019-05-15 23:53:48

标签: gradle mariadb jhipster liquibase

只需按照示例Blog应用程序(http://gist.asciidoctor.org/?github-mraible/jhipster5-demo//README.adoc)试用JHipster v6.0.1。选择Gradle作为构建工具,在MariaDB进行开发和生产的情况下,liquibase任务失败。

  • 安装开发环境:

    • 安装MariaDB 10.3
    • 安装JDK 11并相应地设置环境变量/路径
    • 安装节点(10.15.3)=> npm v6.4.1
    • 安装纱线(1.15.2)
    • 启动一个shell,然后在命令行中:
      • 安装Yoeman:npm install -g yo
      • 安装JHipster:npm install -g generator-jhipster
  • 创建一个新目录blog,cd进入其中并键入:jhipster

  • 选择与上面链接的教程几乎相同的选项,同时在开发和生产中使用MariaDB,并使用Gradle作为构建工具。
  • 启动服务器:./gradlew
  • 运行:yarn start

一切正常。数据库表已按预期创建和填充,并且Web应用程序运行良好。

现在,当我停止服务器并尝试运行任何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; MariaDB 10.3.14;节点v10.15.3;纱线v1.15.2; npm v6.9.0; Gradle v5.4.1]

PS :删除JHipster 6.0.1,然后安装v5.8.2(npm install -g generator-jhipster@5.8.2),重复上述过程,Gradle liquibase任务可以正常工作!我认为这是新的JHipster 6.0.1部署中的错误...我应该/如何向开发团队报告?有临时修复的想法吗?

还要花时间比较两个版本(5.8.2和6.0.1)中的build.gradle文件;它们是完全不同的,除了明显的错误之外,没有其他事情对我有帮助,除了:5.8.2版本直接引用了io.spring.dependency-management插件,而6.0.1版本没有...

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并禁用了“ cacheProvider no”缓存。 当您运行该应用程序时,二级缓存存在另一个问题,我认为这是由于数据库驱动程序所致。 希望对您有帮助!

答案 1 :(得分:0)

好吧!我有解决办法...

我在+文件中添加了以下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版,因为the Gradle plugin page将其引用为最新版本(在撰写本文时)。

我现在可以成功运行./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 / { {1}}部分(请参见以下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" } 。通过这些更改,我成功地在Linux和Windows 10上测试了liquibase任务。

我是唯一注意到这一点的人吗? JHipster团队没有注意到这一点吗?是否未测试JHipster / Gradle / liquibase配置?我的解决方案是完整的解决方案吗?

对JHipster / Gradle / liquibase配置有经验的人可以提供一些见识/确认吗?