在Java11中使用Apache cxf-xjc-plugin很好,我能够从xsd文件生成Java源代码。当试图用JAXB使用这些Java类时,问题就来了:JAXB for Java 11的可用实现是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)实现?jakarta.xml.bind
?您可以使用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模式文件的开头: 问候 问题答案: 试试这个: