Search code examples
javamavencxf-xjc-plugin

cxf-xjc-plugin: generate javax instead of jakarta imports


How to configure latest org.apache.cxf plugin to generate java classes with javax instead of jakarta imports?

            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>4.0.0</version>
                <configuration>
                    <extensions>
                        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:4.0.0</extension>
                    </extensions>
                </configuration>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                        <configuration>
                            <sourceRoot>${basedir}/src/gen/java</sourceRoot>
                            <xsdOptions>
                                <xsdOption>
                                    <xsd>${basedir}/src/main/resources/xslt/MySchema.xsd</xsd>
                                    <packagename>some.package</packagename>
                                </xsdOption>
                            </xsdOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Downgrading plugin to version 2.7.0 helps but it has problems with generating javaDocs, e.g. > signs are not escaped properly.


Solution

  • Ok so using org.apache.cxf:cxf-xjc-plugin:3.3.2 solves my problem. It escapes properly javaDoc and generates classes with javax.xml.bind... imports.

                <plugin>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-xjc-plugin</artifactId>
                    <version>3.3.2</version>
                    <executions>
                        <execution>
                            <id>generate-sources</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>xsdtojava</goal>
                            </goals>
                            <configuration>
                                <sourceRoot>${basedir}/src/gen/java</sourceRoot>
                                <xsdOptions>
                                    <xsdOption>
                                        <xsd>${basedir}/src/main/resources/xslt/MySchema.xsd</xsd>
                                        <packagename>some.package</packagename>
                                    </xsdOption>
                                </xsdOptions>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    

    After analysing dependencies it looks like the plugin uses jakarta.xml.bind:jakarta.xml.bind-api:2.3.3 which has javax.xml.bind as main package (which changes to jakarta.xml.bind starting with version 3.0.1).