java - 如何让 cxf-xjc-plugin 以 utf-8 格式生成源代码

标签 java maven encoding cxf xjc

我尝试使用 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 , 但一无所获。

最佳答案

我可以通过将以下条目添加到 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/

相关文章:

java - 如何使用 java 反射获取从字段扩展类的匿名实例?

java - 与 Spring 一起使用时,Hibernate 将空值插入到表中

java - jooq 聚合函数

java - 如何在每个测试类都有自己的并行 JVM 的情况下运行 Maven surefire?

java - 如何修复此错误: java. lang.NoClassDefFoundError : org/slf4j/impl/StaticLoggerBinder?

java - 将主项目jar添加到项目根文件夹中

java - Hibernate - 如何提供对整数类型的正确映射?

node.js - 对电视的网络请求可从除 Raspberry Pi 以外的任何设备运行

.net - 如何检测文件的使用权限 (DRM)

python - 为什么我在 Python 2.4 中使用 Unicode 数据时会出现 ASCII 编码错误,而在 2.7 中却不会?