是什么让Maven希望在Spring Boot项目中使用带有Zulu Java 11而不是Zulu Java 8的openjfx?

时间:2018-12-18 14:17:22

标签: java maven javafx java-11 azul-zulu

我继承了一个Spring Boot项目,由于Java 9和10(varList.of(...))中添加了一些不错的功能,我们希望使用Java 11进行测试。

Maven项目分为几个部分,其中为Java 8设置了生产代码,为Java 11设置了测试代码。这可以在模块基础上单独很好地工作,并且全局构建可以与Java 8一起工作(除了测试无法编译)和Java10。

现在我想使用Java 11从根目录编译所有东西,因为这是LTS(在Windows 10上是Zulu),出于某种原因,Maven现在想引入  org.openjfx:javafx.base:jar:11.0.0-SNAPSHOT

[INFO] Building mumble-data-service-parent 1.0.0-SNAPSHOT              
[1/8]
[INFO] --------------------------------[ pom ]---------------------------------
[WARNING] The POM for org.openjfx:javafx.base:jar:11.0.0-SNAPSHOT is missing, no dependency information available
[INFO]

由于不满足依赖关系,我无法(至少不是以我能想到的方式)让Maven告诉我为什么想要这样做,所以我不知道在哪里看,并且该项目似乎没有首先引用javafx(这是一个Spring Boot微服务,这会让我有些惊讶)。因此,这个问题。

是什么原因引起的,如何解决?


如Karol所正确推论的,此问题以前曾见过,解决方法是将休眠验证器依赖项升级到新版本。我所需要做的就是将以下属性添加到我的父pom中:

    <!-- needed for building with Java 11 -->
    <hibernate-validator.version>6.0.12.Final</hibernate-validator.version>

2 个答案:

答案 0 :(得分:9)

如果org.hibernate.validator:hibernate-validator:jar:6.0.11.Final是依赖项的一部分,则可能由HV-1644 Using Hibernate Validator with Java 11 brings JavaFX on the classpath引起。更新到6.0.12或更高版本即可解决此问题。

答案 1 :(得分:3)

最近,我在使用带有JDK 11的Maven构建工件时遇到了相同的问题。使用工件org.openjfx:javafx.base:11.0.0-SNAPSHOT(JavaFX,它不再是Java 11的一部分)被指定了一些依赖性。因此,Maven一直希望下载此工件,实际上,该工件在我们的Maven存储库中不存在。因此,随后的构建以及依赖关系树的分析都失败了。我无法确定将在何处使用此工件。

我搜索了此工件的用法,并在Maven JIRA中发现了有关Hibernate的错误:Dependency resolution broken with Java 11 (MNG-6500)

据说在Hibernate 6.0.11中,此伪像是在org.hibernate.validator:hibernate-validator:6.0.11.Final的POM中指定的。但是我不知道在我的项目中有没有使用过这种Hibernate依赖关系。我在整个本地Maven存储库中搜索了此工件。令人惊讶的是,org.glassfish.jersey.ext:jersey-bean-validation:jar:2.28(在指定了org.glassfish.jersey:project:2.28版本的父链中有一个父hibernate-validator)使用了提到的Hibernate构件。而这种依赖关系又被io.confluent:kafka-schema-registry:jar:5.4.0使用。

因此,我唯一要做的就是从io.confluent:kafka-schema-registry:jar:5.4.0依赖项中排除此JavaFX工件

<dependency>
    <groupId>io.confluent</groupId>
    <artifactId>kafka-schema-registry</artifactId>
    <version>5.4.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx.base</artifactId>
        </exclusion>
    </exclusions>
</dependency>