我正在尝试使用 jaxb2:xjc 从多个 .xsd 文件生成域 java 文件。 以下是我的 pom.xml 文件的构建部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>xjc-atom-schema</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<clearOutputDir>true</clearOutputDir>
<outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/atom</outputDirectory>
<packageName>org.greenbuttonalliance.gba_sandbox.common.model.atom</packageName>
<sources>
<source>${project.basedir}/src/main/resources/atom.xsd</source>
</sources>
</configuration>
</execution>
<execution>
<id>xjc-energy-schema</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<clearOutputDir>true</clearOutputDir>
<outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/energy</outputDirectory>
<sources>
<source>${project.basedir}/src/main/resources/usage.xsd</source>
</sources>
<packageName>org.greenbuttonalliance.gba_sandbox.common.model.energy</packageName>
</configuration>
</execution>
<execution>
<id>xjc-retailcustomer-schema</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<clearOutputDir>true</clearOutputDir>
<outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/retailcustomer</outputDirectory>
<sources>
<source>${project.basedir}/src/main/resources/retailcustomer.xsd</source>
</sources>
<packageName>org.greenbuttonalliance.gba_sandbox.common.model.retailcustomer</packageName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我能够成功执行 mvn clean install,但是当我尝试执行 mvn jaxb2:xjc 时,我收到以下错误消息:
Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:3.2.0:xjc (default-cli) on project common: : MojoExecutionException: NoSchemasException
上面的 pom 构建部分位于公共子目录中,旨在用作我的项目目录结构中显示的其他子目录的库 jar:
正在common子目录中执行mvn jaxb:xjc命令。
如有任何帮助,我们将不胜感激。
我尝试了几个项目组织,并最终通过将 .xsd 文件移动到公共子目录的资源文件夹而不是将它们放在资源目录中的模式文件夹中来使 mvn 安装正常工作。
我已使用 -X 诊断选项执行 mvn jaxb2:xjc 命令。根据输出,Jaxb2 使用默认输出目录,尽管 outputDirectory 被 org.codehaus.mojo 插件配置内容覆盖。 这是否意味着真正的问题是 xjc 没有正确处理公共子目录中的 pom.xml 文件,而是真正在查看另一个 pom.xml 文件?
短期目标
jaxb2:xjc
只能由具有单一配置的用户使用,因为它是使用 default-cli
id 执行的(请参阅使用正常 clean install
和仅使用 jaxb2:xjc
运行时的 mvn 输出和插件执行)
查看另一个类似插件的相关问题:https://github.com/highsource/jaxb-tools/issues/520#issuecomment-1987970784
最初问题的另一个提示:您应该在
src/main/java
目录之外生成源,但更多地在 target/generate-sources/xjc-XXX
之类的目录中生成源,其中 XXX
对于每个不同的执行都是不同的。