这个问题特定于 IntelliJ。我还将将此内容发布到 IntelliJ 支持社区网站:https://intellij-support.jetbrains.com/hc/en-us/community/topics。 我使用的是最新版本的 IntelliJ,即 2023.3.4(内部版本 #IU-233.14475.28,构建于 2024 年 2 月 13 日)。
我目前正在使用maven插件com.evolvedbinary.maven.jvnet:jaxb30-maven-plugin:0.15.0
获取 *.XSD 文件并从 XSD 生成 POJO,并将 POJO 编译成类以在我的应用程序中使用。
我的目录结构的片段(出于此问题的目的是):
maven-module1/
src/main/java/org/acme/myapp/Main.java
src/main/resources/xsd/myData.xsd
运行
mvn clean install
后,XJB插件生成源代码并由maven编译它们并将它们与其他编译的Java文件一起放入target/classes目录中。下面显示了生成的 target/classes
和 target/generated-sources
目录。
maven-module1/
target/generated-sources/xjc/org/acme/myapp/myData.java
target/classes/org/acme/myapp/Main.class
target/classes/org/acme/myapp/myData.class
所以我生成的源代码没有放入普通的
src/main/java
子目录中,而是放入目标目录内的子目录中。
<properties>
<maven-jaxb30-plugin-version>0.15.0</maven-jaxb30-plugin-version>
</properties>
<plugin>
<groupId>com.evolvedbinary.maven.jvnet</groupId>
<artifactId>jaxb30-maven-plugin</artifactId>
<version>${maven-jaxb30-plugin-version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<strict>false</strict>
<schemaIncludes>**/xsd/*.xsd</schemaIncludes>
<bindingIncludes>**/xjb/*.xjb</bindingIncludes>
<useDependenciesAsEpisodes>false</useDependenciesAsEpisoes>
</configuration>
</plugin>
如何让IntelliJ使用这个maven插件来生成源代码并编译源代码?
注意:我已经尝试使用 IntelliJ 插件中描述的 https://www.jetbrains.com/help/idea/generate-java-from-xml-schema-using-jaxb-dialog.html
并且发现它有限制(它不允许我进入target/ generated-sources 的输出目录)
我想要实现的是:
目前,我的解决方法是从该 Maven 模块目录的命令行运行 Maven clean install,以生成并编译 XSD POJO。
您可以进入 Settings > Build > Build Tools > Maven > Runner 并选择 Delegate。
此功能的文档位于:https://www.jetbrains.com/help/idea/delegate-build-and-run-actions-to-maven.html#delegate_to_maven
该链接说:
默认情况下,IntelliJ IDEA 使用本机 IntelliJ IDEA 构建器构建 Maven 项目。如果您有纯 Java 或 Kotlin 项目,这可能会有所帮助,因为 IntelliJ IDEA 支持增量构建,可显着加快构建过程。但是,如果您的配置可以动态更改编译,或者您的构建生成具有自定义布局的工件,那么 Maven 更适合构建过程。
我从 IntelliJ/JetBrains 技术支持那里得到了以下答案:
无法设置用于文件生成的自定义工具。