如何使用 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>
为了从 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>