在 Helios/m2eclipse 下,当我生成 jaxb 源时,当我执行“更新项目配置”时,它们将被放在 Eclipse 源路径中。
Indigo/m2e(2011 年 6 月 22 日的初始版本)不会发生这种情况。我需要做什么来解决这个问题?
我使用的是标准的 maven-jaxb2-plugin,版本 0.75。
在 Helios/m2eclipse 下,当我生成 jaxb 源时,当我执行“更新项目配置”时,它们将被放在 Eclipse 源路径中。
Indigo/m2e(2011 年 6 月 22 日的初始版本)不会发生这种情况。我需要做什么来解决这个问题?
我使用的是标准的 maven-jaxb2-plugin,版本 0.75。
在 Eclipse 中,转到“安装新软件”添加软件站点:http ://bitstrings.github.com/m2e-connectors-p2/releases/
选择“jaxb2 的 m2e 连接器”
安装该插件后,jaxb2 插件应该与新版本的 m2e 正确集成。
好吧,您需要右键单击“target/generated-sources/xjc”并选择“Build Path -> Use as source folder”之类的内容
如果您无法使 m2e 连接器正常工作,作为替代解决方法,您可以使用 build-helper-maven-plugin 将生成的源添加到构建路径:
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/xmlbeans</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
在等待解决此问题时,我正在使用以下临时解决方法:
我们在一个单独的 maven 模块中有 jaxb-plugin 和生成的类。在 Eclipse 中,我只能在该模块上“禁用 Maven 自然”。然后我可以在我们的大型 maven 项目的其余部分中使用 Indigo 和 m2eclipse,它将取决于 jaxb 模块的 jar(必须从命令行构建)。这对我来说很有效,因为我们的项目已经以这种方式组织了。
对于那些遭受 maven-jaxb2-plugin 和 Eclipse 没有附加源代码的人。作者已从Sun 切换到 Glassfish JAXB 工件,并且依赖关系树已更改。以前许多 JAR 被隐藏在jaxb-xjc
没有传递的 JAR 中。现在,这已被删除,并且之前的传递依赖会tools.jar
中断 Eclipse 执行。使用 JDK VM 启动 Eclipse,它将工作。(测试了最新的 Maven 3.3.9、Maven JAXB2 插件 0.13.1、最新的 m2e JAXB2 连接器和 Eclipse Mars.2)