Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to make cxf-xjc-plugin generate sources in utf-8

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.

like image 780
MaxVar Avatar asked Apr 01 '14 05:04

MaxVar


People also ask

How do I generate a class from WSDL using Apache CXF?

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.

What is Cxf XJC plugin?

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.

Which Cxf plugin can be used to generate the java stubs?

Automatic WSDL Java Stub generation in Eclipse Workspace using Apache CXF and CXF Maven Plugin.


1 Answers

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>
like image 108
FcoSandoval Avatar answered Sep 28 '22 08:09

FcoSandoval