当前位置: 首页 > 面试题库 >

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

曾元忠
2023-03-14
问题内容

我尝试使用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>


 类似资料:
  • 在Java11中使用Apache cxf-xjc-plugin很好,我能够从xsd文件生成Java源代码。当试图用JAXB使用这些Java类时,问题就来了:JAXB for Java 11的可用实现是或,它们都将包中的所有类移到。这是一个问题,因为cxf-xjc-plugin生成的Java类是使用包中的注释来注释的。 在我的脑海中存在两种潜在的解决方案: 是否有使用原始包的JAXB(针对Java

  • 问题内容: 我正在尝试获取 cxf-codegen-plugin 以从wsdl文件生成源。当调用wsdl2java手册时,会生成所需的类,但是当使用 mvn generate-sources时, 什么也不会发生,并且我收到消息“项目不需要目标”。直接调用插件没有帮助。 我的诗歌摘录如下: 问题答案: 这看起来非常像我(成功)在我的一个项目中配置该插件的方式。我希望它能奏效。(我相信您可以省略;的默

  • 我正在尝试让cxf-codegen-plugin从我的wsdl文件生成源代码。当调用wsdl2java manual时,生成了所需的类,但当使用mvn generate-sources时,什么也没有发生,我得到的消息是“No goals needed for Project”。直接调用插件没有帮助。

  • 我试图让两个连字符触发短破折号,三个连字符触发长破折号;喜欢 除了工作。以下是我的收获: 这部作品(11部产生2111部产生3部) 这是同一个脚本,但“1”已被替换为“-”,“2”已被替换为“-”,而“3”已被替换为“-“--”-“应该生成”-“和“--”应该生成”-”,但它不起作用,因为我使用的版本中不完全支持Unicode(AutoHotKey.com上的AutoHotKey_L v1.1.0

  • 问题内容: 我想测试我的代码的Unicode处理。有什么我可以放入random.choice()从整个Unicode范围中选择的东西,最好不是外部模块吗?Google和StackOverflow似乎都没有答案。 编辑:看起来这比预期的要复杂,所以我将重新表述这个问题- 以下代码足以生成Unicode中的所有有效非控制字符吗? 问题答案: 您可以使用Markus Kuhn 提供的UTF-8压力测试。