微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使cxf-xjc-plugin在utf-8中生成源

如何解决如何使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-4369JAXB-499,我试图在运行时强制使用maven项目属性进行编码<file.encoding>utf-8</file.encoding>并设置系统属性mvn -Dfile.encoding=utf-8 clean install,但是却无济于事。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。