我尝试使用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压力测试。