我尝试使用 cxf-xjc-plugin 在 maven 项目中从 xsd 生成 java 类。
它运行良好,但生成的源文件使用特定于平台的编码(windows pc 上的 cp1251)而不是 utf-8。如果任何 xsd 类型在模式注释中包含非拉丁字符,那么它们只能在该特定编码中变得可读,编译器稍后会提示 [WARNING] /C:/.../SomeType.java:[17,4] unmappable character for encoding UTF-8
.
请帮我强制使用 utf-8 生成源代码。
源编码设置为
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
构建插件是这样设置的:
<build>
...
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.7.0</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.7.0</extension>
<extension>net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources</sourceRoot>
<xsdOptions>
<xsdOption>
<extension>true</extension>
<xsd>${basedir}/src/main/resources/schemas/Policy.xsd</xsd>
<bindingFile>${basedir}/src/main/resources/schemas/Policy.xjb</bindingFile>
<extensionArgs>
<extensionArg>-Xdv</extensionArg>
<extensionArg>-Xfluent-api</extensionArg>
</extensionArgs>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
...
在阅读了 xjc 的一些旧问题之后,特别是 CXF-4369和 JAXB-499我试图用 Maven 项目属性强制编码 <file.encoding>utf-8</file.encoding>
并在运行时设置系统属性 mvn -Dfile.encoding=utf-8 clean install
, 但一无所获。
最佳答案
我可以通过将以下条目添加到 xsdOption 元素来使 cxf-xjc-plugin 以 UTF-8 格式生成源代码:
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
</extensionArgs>
关于java - 如何让 cxf-xjc-plugin 以 utf-8 格式生成源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777386/