如何使用 Java 11 和 maven 运行 XJC?

How to run XJC with Java 11 and maven?

为了从 XSD 生成 java 类(用于读取 XML 文件),我们使用了 jaxb2-maven-plugin 和 Java8。

对于 java 11,我们遇到了很多问题...

哪些库和插件可以(今天)工作,允许使用 java 11 和 maven 从 XSD 生成 java 代码?如果可能,请指出不同的解决方案,例如使用 cxf-xjc-plugin、jaxb2-Maven-Plugin 等。

我刚刚调查了同一主题。 Java 11 最好的方法是使用 cxf-xjc-plugin。这是一个 Maven 插件。没有烦人的解决方法,没有其他 Maven 插件能够在 Java 11 下工作。

我在这里发布了一个带有 cxf-xjc-plugin 的完整示例:https://artofcode.wordpress.com/2019/02/28/generating-classes-from-xsd-under-java-11-the-right-way/

我能够让 Jaxb2-maven-plugin 与 Java 11 一起工作。默认情况下,生成的 类 将在生成的 类 包中创建。我唯一的抱怨是它没有实现 toString 方法。如果我弄明白了,我会更新这个。

<dependency>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.5.0</version>
</dependency>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.5.0</version>
    <executions>
        <execution>
            <id>xjc-foo</id>
            <goals>
                <goal>xjc</goal>
            </goals>
            <configuration>
                <sourceType>wsdl</sourceType>
                <sources>
                    <!-- if you put path only, it will read any wsdl or xsd file -->
                    <!-- if you have xsd that is imported in wsdl, then make sure you point it wsdl file -->
                    <source>${project.basedir}/src/main/resources/schemas/foo.wsdl</source>
                </sources>
                <clearOutputDir>false</clearOutputDir>
                <packageName>foo</packageName>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>javax.activation.api</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>
</plugin>