jaxb - 在没有 xjc 的情况下从 xsd 生成 java class

jaxb - generate java class from xsd without xjc

我需要一些帮助,我正在尝试为我的应用程序解组 XML。所以我有一个 XSD 文件,我想从中生成 Java 类。但我不想使用 XJC 命令(因为它不在我的 JDK 中,而且我希望它在每次我 运行 我的代码时自动完成)。

请问有人有其他不使用 xjc 的 JAXB 选项吗?

我正在与 Java(jdk : 12 & jre : 8)和 IntelliJ 社区合作。

更新: pom 文件中指示的插件不工作 "couldn't find artifact.."

这实际上取决于您的项目是如何组织/构建的。如果你想在每次构建项目时生成 java 类 以基于 XSD 文件构建(这是有道理的,因为 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>