我试图用maven cxf-xjc-plugin从XSD文件中生成Java源代码。
每个人都很好,但我需要添加一个新的.xsd文件。该文件中包含其他.xsd文件,并且存在冲突,因为新的.xsd文件定义了与现有.xsd文件同名的实体(我知道,我知道,但我只是这些.xsd文件的用户)。阿!他们应该在同一个包裹里..。
错误是典型的:
架构不能包含两个同名的全局组件;此架构包含两次出现的.
我读到有人能够修复类似的问题,告诉他不验证.xsd所用的工具。
我想知道是否可以告诉cxf-xjc-plugin来验证.xsd文件并将其转换为。
maven配置如下:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>3.0.5</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<forceRegenerate>false</forceRegenerate>
<sourceRoot>${project.basedir}/src/main/java</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>${basedir}/src/main/resources/webapi/xsd/SuperSchemaCommon.xsd</xsd>
<packagename>com.XX.XXXXX.package</packagename>
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
</extensionArgs>
</xsdOption>
<xsdOption>
<xsd>${basedir}/src/main/resources/webapi/xsd/SuperSchemaInput.xsd</xsd>
<bindingFile>${basedir}/src/main/xjb/pnr/SuperSchemaInput.xjb</bindingFile>
<packagename>com.XXXXXXX.input</packagename>
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
</extensionArgs>
</xsdOption>
</xsdOptions>
</configuration>
<goals>
<goal>xsdtojava</goal>
</goals>
</execution>
</executions>
</plugin>提前感谢!
发布于 2016-08-20 08:00:16
找到解决办法了!
只需添加xjc参数"-nv“作为另一个扩展arg。在执行maven任务时,它被传递给xjc的参数。
<xsdOption>
...
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
<arg>-nv</arg>
</extensionArgs>
</xsdOption>https://stackoverflow.com/questions/39038506
复制相似问题