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

3
使用Apache cxf-xjc-plugin和Java 11生成Java源文件正常,在尝试使用JAXB时出现问题:Java 11的可用JAXB实现是org.glassfish.jaxb:jaxb-runtimeorg.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包?

当前的解决方法看起来是这样的:find . -name '*.java' -print0 | xargs -0 perl -pi -e 's|\Qjavax.xml.bind\E|jakarta.xml.bind|g',使用Maven exec插件运行。不太理想。 - Ivan G.
1个回答

0

您可以使用 maven-antrun-plugin 在生成的文件中替换 javax.xml.bindjakarta.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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接