当前位置: 首页 > 知识库问答 >
问题:

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

金皓君
2023-03-14

在Java11中使用Apache cxf-xjc-plugin很好,我能够从xsd文件生成Java源代码。当试图用JAXB使用这些Java类时,问题就来了:JAXB for Java 11的可用实现是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

共有1个答案

滕项明
2023-03-14

您可以使用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>
 类似资料:
  • 问题内容: 我尝试使用cxf-xjc-plugin从Maven项目中的xsd生成Java类。 它运行正常,但是生成的源文件使用特定于平台的编码(在Windows pc上为cp1251)而不是utf-8。如果任何xsd类型在模式注释中包含非拉丁字符,则它们仅在该特定编码中才可读,并且编译器随后会抱怨。 请帮助我强制 utf-8 生成源。 源编码设置为 构建插件的设置如下: 在阅读了xjc的一些较旧的

  • 问题内容: 我正在尝试获取 cxf-codegen-plugin 以从wsdl文件生成源。当调用wsdl2java手册时,会生成所需的类,但是当使用 mvn generate-sources时, 什么也不会发生,并且我收到消息“项目不需要目标”。直接调用插件没有帮助。 我的诗歌摘录如下: 问题答案: 这看起来非常像我(成功)在我的一个项目中配置该插件的方式。我希望它能奏效。(我相信您可以省略;的默

  • 我使用XML模式,并用xjc生成java文件,以便与JAXB一起使用。生成的java文件具有默认的@XmlAccessorType(XmlAccessType。字段)指定。我想改变这一点,使生成的java文件具有带注释的属性访问(@XmlAccessorType(XmlAccessType。属性),并且不在字段级别生成@XmlElement / @XmlAttribute批注。有没有办法通过自定义

  • 我正在尝试让cxf-codegen-plugin从我的wsdl文件生成源代码。当调用wsdl2java manual时,生成了所需的类,但当使用mvn generate-sources时,什么也没有发生,我得到的消息是“No goals needed for Project”。直接调用插件没有帮助。

  • Java11已经取消了对JAXB和xjc等工具的支持,这些工具从XSD模式生成Java文件。我在Gradle中找不到很多xjc代的例子,并尝试了一些选项,但到目前为止运气不佳。另外,在SpringBootGradle项目中应该添加哪些依赖项来提供对JAXB的全面支持?

  • 问题内容: 我使用XJC工具为XSD架构生成Java类。当我使用JAXB Marshaller将类编组为XML有效负载时,我在输出XML中缺少“ schemaLocation”参数,但在xsd文件中声明了此参数。如何在输出XML中强制执行“ schemaLocation”参数? 以下是用于代码生成的xsd模式文件的开头: 问候 问题答案: 试试这个: