I try to generate java classes from xsd in a maven project using cxf-xjc-plugin.
It runs fine, but the generated source files get platform specific encoding (cp1251 on a windows pc) instead of utf-8. If any xsd types contain non-latin characters in schema annotations, then they become readable only in that specific encoding and the compiler later complains with [WARNING] /C:/.../SomeType.java:[17,4] unmappable character for encoding UTF-8
.
Please help me force utf-8 for sources generation.
The source encoding is set with
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
The build plugin is set up like that:
<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>
...
after having read through some older issues with xjc, particularly CXF-4369 and JAXB-499 I tried to force encoding with maven project property <file.encoding>utf-8</file.encoding>
and set a system property while running mvn -Dfile.encoding=utf-8 clean install
, but got nowhere.
You will have to make sure that you create an appropriate directory structure for your project and add the earlier shown hello. wsdl file to the specified folder. The wsdl2java plugin will compile this wsdl and create Apache CXF classes in a pre-defined folder.
The CXF XJC Maven Plugin is a wrapper around the JAXB XJC tool to handle the XSD -> Java tasks. There are two targets: xsdtojava. Defaults into generate-sources phase and outputs to ${project.build.directory}/generated/src/main/java.
Automatic WSDL Java Stub generation in Eclipse Workspace using Apache CXF and CXF Maven Plugin.
I could make cxf-xjc-plugin generate sources in UTF-8 by adding the following entry to the xsdOption element:
<extensionArgs>
<arg>-encoding</arg>
<arg>UTF-8</arg>
</extensionArgs>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With