如何解决如何使cxf-xjc-plugin在utf-8中生成源
通过将以下条目添加到xsdOption元素中,可以使cxf-xjc-plugin在UTF-8中生成源:
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
</extensionArgs>
解决方法
我尝试使用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
,但是却无济于事。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。