【发布时间】:2012-08-11 21:55:54
【问题描述】:
我有一个基于 Maven 的项目,我尝试在其中添加一些由“jaxb2-maven-plugin”Maven 插件自动生成的 JAXB 类。然而,我的第一次剪辑让我陷入了循环依赖循环:
- 因为这些 JAXB 类尚未生成,所以我的其他引用它们的源有编译错误。
- 因为那些其他来源有编译错误,所以这些 JAXB 类不会生成。
似乎有两种明显的可能性可以解决这个问题:
- 注释掉损坏的引用,以便项目构建和 JAXB 类自动生成。然后将这些生成的源代码从
/target复制到/src/main/java,这样对它们的引用就不会导致编译错误。 - 创建一个完全独立的项目,只包含 JAXB 的东西。将其作为依赖项包含在我的主项目中。
我在这里遗漏了什么吗?选项 #1 似乎完全荒谬...只是 不能 是人们使用 JAXB 的方式。选项#2 似乎更合理,但仍然相当低效和麻烦。为了使用 JAXB,我真的必须承担一个完全独立的项目的开销吗?
是否有任何更优雅的方法可供开发人员在 Maven 插件生成它们的同一项目中引用 JAXB 生成的类?
更新:应要求,这是我的 POM 的相关部分:
<build>
<plugins>
<plugin>
<!-- configure the compiler to compile to Java 1.6 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The name of your generated source package -->
<packageName>com.mypackage</packageName>
</configuration>
</plugin>
</plugins>
</build>
当我运行mvn clean package 时,我确实看到在/target 子目录下生成了我的JAXB 源。但是,这些生成的源代码不会自动添加到编译阶段的类路径中。
POST-RESOLUTION UPDATE:事实证明,我的编译问题与我在 Eclipse 中运行的事实有关,它的 Maven 集成与“jaxb2-maven-plugin”有一些问题”。有关该问题及其解决方案的更多详细信息,请参阅this StackOverflow question。
【问题讨论】:
-
请贴出POM的相关部分。
标签: java jakarta-ee maven jaxb spring-oxm