B/src/main/gen pom.xml
我想在B项目中从XSD生成类,它存在于一个项目中
在B项目的pom.xml中,我有:
<dependencies>
<dependency>
<groupId>test</groupId>
<artifactId>A</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/resources</schemaDirectory>
<outputDirectory>src/main/gen</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
我的Maven-jaxb2-plugin
支持单独的模式编译。
如何做到这一点:
A
作为插曲。a.xsd
导入到b.xsd
中,则必须在编译b
时使该模式对JAXB可用:
a.xsd
A
,例如使用Maven依赖项插件。a.xsd
的位置重写到工件中a
pom.xml
:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<configuration>
<catalog>src/main/resources/catalog.cat</catalog>
<episodes>
<episode>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin-tests-MAVEN_JAXB2_PLUGIN-82-a</artifactId>
</episode>
</episodes>
</configuration>
</plugin>
配置表示使用工件A
作为插曲。因此,当JAXB/XJC遇到在A
中编译的类时,它将重用这些类,而不是生成新的类。
顺便说一句,您可以使用useDependenciesasepisodes
而不是配置单独的剧集。在这种情况下,所有的依赖关系都将被视为事件,这非常方便(配置较少)。
REWRITE_SYSTEM "http://www.ab.org" "maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-MAVEN_JAXB2_PLUGIN-82-a:jar::!"
<import namespace="urn:a" schemaLocation="http://www.ab.org/a.xsd"/>
这将被重写为maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-maven_jaxb2_plugin-82-a:JAR::!/a.xsd
,它将被解析为项目JAR中的a.xsd
。最后,JAXB/XJC将能够从A
的JAR工件中读取这个模式。
您还可以使用public
而不是rewrite_system
来引用每个命名空间URI的a.xsd
,而不是架构位置(这在逻辑上更好):
PUBLIC "urn:a" "maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-MAVEN_JAXB2_PLUGIN-82-a:jar::!/a.xsd"
但是,JAXB/XJC中有一个bug,如果您的xs:import
中有schemaLocation
,这个bug就不起作用。
这在目前是可行的:
<xsd:import namespace="urn:a"/>
这在当下行不通:
<xsd:import namespace="urn:a" schemaLocation="a.xsd"/>
我已经向Oracle发送了一个pull请求来修复这个问题,但它还没有被应用。
问题内容: 我有一个巨大的QuickBooks SDK .XSD模式文件,该文件定义了我可以从QuickBooks发送/接收的XML请求/响应。 我希望能够轻松地从这些.XSD文件生成Java类,然后将其用于将XML编组为Java对象,以及将Java对象编组为XML。 是否有捷径可寻…? 理想情况下,它在运行时不需要基本Java发行版外部的任何库。但是我很灵活 问题答案: JAXB确实可以满足您的
有没有什么方法可以从wsdl生成xsd。任何链接或工具也可以。最简单的方法是什么?
Java11已经取消了对JAXB和xjc等工具的支持,这些工具从XSD模式生成Java文件。我在Gradle中找不到很多xjc代的例子,并尝试了一些选项,但到目前为止运气不佳。另外,在SpringBootGradle项目中应该添加哪些依赖项来提供对JAXB的全面支持?
问题内容: 我有以下两个javascript函数: 1 2 我想将它们放在外部“ .js”文件中 1 2 调用这些函数的正确语法是什么? 问题答案: 像这样的代码 希望对您有帮助。…谢谢
myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?
与JAXB为给定XSD生成JAXB类类似,Jackson是否提供了从XSD或JSON生成Jackson类的实用程序。 JAXB类geberator已经生成了一组为XSD模式定义的类。例如,对于多态类型,JAXB具有以下注释,以基于XML元素名称来标识名称。 是否可以在杰克逊中创建类似的类。即,基于XML元素名称来标识类型。