3

使用带有 Java 11 的 Apache cxf-xjc-plugin 工作正常,我能够从 xsd 文件生成 Java 源代码。尝试通过 JAXB 使用这些 Java 类时会出现问题:Java 11 的 JAXB 的可用实现是org.glassfish.jaxb:jaxb-runtimeorg.eclipse.persistence:org.eclipse.persistence.moxy,它们都将包中的所有类移动javax.xml.bindjakarta.xml.bind. 这是一个问题,因为 cxf-xjc-plugin 生成的 Java 类是使用 package 中的注释进行注释的javax.xml.bind

我认为有两种可能的解决方案:

  • 是否有使用原始javax.xml.bind包的 JAXB(用于 Java 11)的实现?
  • 有没有办法配置 cxf-xjc-pluginjakarta.xml.bind为生成的类注释使用包?
4

1 回答 1

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>
于 2020-12-05T18:40:01.740 回答