我需要一些帮助,我正在尝试为我的应用程序解组XML。所以我有一个XSD文件,我想从中生成Java类。但是我不想使用XJC
命令(因为它不在我的JDK中,而且我希望每次运行我的代码时都能自动完成它)。
有人可以在不使用xjc的情况下使用JAXB吗?
我正在使用Java(jdk:12&jre:8)和IntelliJ社区。
更新: pom文件中指示的插件无法正常工作“找不到工件。”
这实际上取决于您的项目的组织/构建方式。如果您希望在每次构建项目时都在XSD文件的基础上生成要构建的Java类(这是有道理的,因为XSD文件可能由于新的要求或新的服务版本而被更改),则您可能应该使用构建管理器(Maven)或gradle)和适当的maven / gradle插件,这些插件将在项目构建过程中调用。
为此,可以使用maven-jaxb2-plugin,它也可以在后台使用XJC,但是当使用maven或gradle时,您不必担心系统中是否包含XJC,它将由项目构建下载。管理器以及定义的所有其他依赖项。
更新:
这是插件配置的示例:
<build>
<plugins>
<!-- Generate JAXB classes -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<executions>
<!-- Handle XML schema -->
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>PATH_TO_XSD_FILE</include>
</schemaIncludes>
<generatePackage>NAME_OF_JAVA_PACKAGE</generatePackage>
</configuration>
<id>jaxb-generate-classes</id>
</execution>
</executions>
<configuration>
<forceRegenerate>true</forceRegenerate>
<generateDirectory>${project.build.directory}/generated-sources/xjc</generateDirectory>
<verbose>true</verbose>
<debug>true</debug>
</configuration>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.sun.codemodel</groupId>
<artifactId>codemodel</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
插件配置应在pom文件的“ build”部分的“ plugins”下描述。我使用插件的示例配置更新了答案。