如何利用 Java 11 中的 cxf-xjc-plugin 生成的类?

问题描述 投票:0回答:2

在 Java 11 中使用 Apache cxf-xjc-plugin 效果很好,我能够从 xsd 文件生成 Java 源。当尝试将这些 Java 类与 JAXB 一起使用时,问题就出现了:Java 11 的 JAXB 的可用实现是

org.glassfish.jaxb:jaxb-runtime
org.eclipse.persistence:org.eclipse.persistence.moxy
,它们都将包
javax.xml.bind
中的所有类移动到
jakarta.xml.bind
。这是一个问题,因为 cxf-xjc-plugin 生成的 Java 类是使用包中的注释进行注释的
javax.xml.bind

我脑海中存在两种可能的解决方案:

  • 是否有使用原始
    javax.xml.bind
    包的 JAXB(针对 Java 11)的实现?
  • 有没有办法配置cxf-xjc-plugin使用包
    jakarta.xml.bind
    来生成类注释?
java maven jaxb xjc cxf-xjc-plugin
2个回答
0
投票

您可以在生成的文件中使用

maven-antrun-plugin
javax.xml.bind
替换为
jakarta.xml.bind

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>fix-sources</id>
            <phase>process-sources</phase>
            <configuration>
                <target>
                    <replace token="javax.xml.bind." value="jakarta.xml.bind."dir="${project.build.directory}/generated/src/main/java/path/to/sources">
                        <include name="**/*.java"/>
                    </replace>
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

0
投票

这个独立的 Maven 项目下载 (zip) 演示了如何在 Java 11+ 中使用由 cxf-xjc-plugin 生成的类。它使用 cxf-xjc-plugin v4.0.1 使用来自

jakarta.xml.bind.annotation
的注释来注释生成的 Java 类。该演示包括 (a) 单元测试和 (b) 使用 JAXB 解组和编组示例 XML 文件的简单应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.