当我用JDK 8编译我的XSD时,我得到了我期望的输出。
当我用JDK 7编译XSD时,它似乎没有读取我的binding.xjb文件。
我敢肯定,这是jaxb-v2之间的许多缺陷之一。
发布说明:JAXB
有人能帮助我,如果可能的话,如何更新JDK使用的JAXB版本吗?
我正在使用Maven构建并使用.的依赖关系。
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.6.4</version>
</dependency>我用的插件是..。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<catalog>target/classes/catalog.cat</catalog>
<strict>false</strict>
<extension>true</extension>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<bindingIncludes>
<include>*.xjb</include>
</bindingIncludes>
<generatePackage>com.pcmsgroup.v21.esi.deviceservice.bean</generatePackage>
<args>
<arg>-XtoString</arg>
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
<arg>-Xinheritance</arg>
<arg>-Xcopyable</arg>
<arg>-XenumValue</arg>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.9.5</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.5</version>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
<configuration>
<catalog>target/classes/catalog.cat</catalog>
<strict>false</strict>
<extension>true</extension>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<bindingIncludes>
<include>*.xjb</include>
</bindingIncludes>
<generatePackage>com.jeff.bean</generatePackage>
<args>
<arg>-XtoString</arg>
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
<arg>-Xinheritance</arg>
<arg>-Xcopyable</arg>
<arg>-XenumValue</arg>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.9.5</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.5</version>
</plugin>
</plugins>
</configuration>
</plugin>我可能走错路了,也许我需要看看org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
这显示了JDK和JDK 8运行之间的区别。在左边,它似乎忽略了binding.xjc文件,因此不知道枚举的大小。

我们还可以看到,生成的java类具有不同的类型。

另外,它在JDK 8中生成Adapter类,而在JDK 7中不生成Adapter类。

发布于 2018-04-25 08:35:48
很少有建议:
/plugin/executions/execution/configuration/args下,一个在/plugin/configuration/args下。你可以把它放在/plugin/configuration/args里。只要提到一个例子插件定义作为参考,你可以修剪你不需要的细节。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<generatePackage>com.some.sample.package</generatePackage>
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
<bindingDirectory>src/main/resources/xjb</bindingDirectory>
<generateDirectory>${project.build.directory}/generated-sources</generateDirectory>
<extension>true</extension>
<args>
<arg>-no-header</arg>
<arg>-Xxew</arg>
<arg>-Xxew:instantiate lazy</arg>
<arg>-Xxew:delete</arg>
<arg>-XtoString</arg>
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
<arg>-Xvalue-constructor</arg>
<arg>-Xfluent-api</arg>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>${jaxb2.basics.version}</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>${jaxb2.fluentapi.version}</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-value-constructor</artifactId>
<version>${jaxb2.value.constructor.version}</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>${jaxb2.basics.annotate.version}</version>
</plugin>
</plugins>
</configuration>
<executions>
<execution>
<id>abc.xsd</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>abc.xsd</include>
</schemaIncludes>
<bindingIncludes>
<include>abc.binding.xml</include>
</bindingIncludes>
<generatePackage>com.some.sample.package.transfer</generatePackage>
<removeOldOutput>false</removeOldOutput>
<forceRegenerate>true</forceRegenerate>
<cleanPackageDirectories>false</cleanPackageDirectories>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.github.jaxb-xew-plugin</groupId>
<artifactId>jaxb-xew-plugin</artifactId>
<version>${jaxb.xew.plugin.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>${jaxb.xjc.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-osgi</artifactId>
<version>${jaxb.xjc.version}</version>
</dependency>
</dependencies>
</plugin>
<jaxb2.basics.version>0.9.2</jaxb2.basics.version>
<jaxb.xew.plugin.version>1.1</jaxb.xew.plugin.version>
<jaxb.xjc.version>2.2.6</jaxb.xjc.version>
<jaxb2.fluentapi.version>3.0</jaxb2.fluentapi.version>
<jaxb2.value.constructor.version>3.0</jaxb2.value.constructor.version>
<javax.xml.bind.version>2.2.6</javax.xml.bind.version>
<jaxb2.basics.annotate.version>1.0.4</jaxb2.basics.annotate.version>https://stackoverflow.com/questions/50017204
复制相似问题