Java 10 上具有 JPA 静态元模型的 JHipster5 项目

dje*_*son 5 jpa metamodel maven-compiler-plugin jhipster java-10

我一直在尝试升级我的 JHipster 5 应用程序以使用 Java 10,但我无法让它使用 Maven 编译和处理 JPA 静态元模型。

\n\n

显然maven-compiler-plugin不是hibernate-jpamodelgen为了生成 JPA 静态元模型而触发。

\n\n

为了升级项目,我有:

\n\n
    \n
  • 安装Oracle\xc2\xb4s JDK 10.0.1
  • \n
  • 将我的 pom.xml 切换为<java.version>10</java.version>
  • \n
  • 升级了 maven-compiler-plugin 以添加java.xml.bind模块(因为从 Java 10 开始默认不包含该模块),如下所示:

    \n\n
        <plugin>\n        <groupId>org.apache.maven.plugins</groupId>\n        <artifactId>maven-compiler-plugin</artifactId>\n        <version>${maven-compiler-plugin.version}</version>\n        <configuration>\n            <!-- fork is needed so compiler args can be used -->\n            <fork>true</fork>\n            <compilerArgs>\n                <arg>-J--add-modules</arg>\n                <arg>-Jjava.xml.bind</arg>\n            </compilerArgs>\n            <annotationProcessorPaths>\n                <path>\n                    <groupId>org.mapstruct</groupId>\n                    <artifactId>mapstruct-processor</artifactId>\n                    <version>${mapstruct.version}</version>\n                </path>\n                <!-- For JPA static metamodel generation -->\n                <path>\n                    <groupId>org.hibernate</groupId>\n                    <artifactId>hibernate-jpamodelgen</artifactId>\n                    <version>${hibernate.version}</version>\n                </path>\n\n            </annotationProcessorPaths>\n        </configuration>\n    </plugin>\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
\n\n

这样,当我运行时./mvnw clean compile没有进一步详细的错误消息时,我会遇到编译失败。

\n\n

如果我<compilerArgs>从 pom.xml 中删除标签并运行相同的命令,我会得到:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

\n\n

我已按照此处提供的升级说明进行操作

\n\n

另外,我在GitHub上提供了这个示例项目

\n\n

是我升级到 Java 10 的提交更改

\n

dje*_*son 4

为了在这里注册解决方案希望帮助其他人,以下是解决此问题的方法:

事实证明这是 Java 9 与hibernate-jpamodelgen@5.2.16.Final. 一旦我升级到 Hibernate 版本,5.3.1.Final它就会再次开始编译。

我还必须按照此答案解决 JAXB 依赖关系。