【问题标题】:How does one get JAXB-generated sources onto the Eclipse build path under m2e/Indigo?如何将 JAXB 生成的源代码放到 m2e/Indigo 下的 Eclipse 构建路径中?
【发布时间】:2011-09-22 00:44:08
【问题描述】:

在 Helios/m2eclipse 下,当我生成 jaxb 源时,当我执行“更新项目配置”时,它们将被放在 Eclipse 源路径中。

Indigo/m2e(2011 年 6 月 22 日首次发布)不会发生这种情况。我需要做什么来解决这个问题?

我使用的是标准的 maven-jaxb2-plugin,版本 0.75。

【问题讨论】:

标签: m2eclipse m2e maven-jaxb2-plugin


【解决方案1】:

对于那些遭受 maven-jaxb2-plugin 和 Eclipse 没有附加源代码的人。作者从Sun to the Glassfish JAXB artifacts切换,依赖树也变了。以前许多 JAR 被隐藏为 jaxb-xjc 而没有传递的。现在,这已被删除,并且之前对 tools.jar 的传递依赖会中断 Eclipse 执行。使用 JDK VM 启动 Eclipse,它就会工作。 (测试了最新的 Maven 3.3.9、Maven JAXB2 插件 0.13.1、最新的 m2e JAXB2 连接器和 Eclipse Mars.2)

【讨论】:

    【解决方案2】:

    在 Eclipse 中转到“安装新软件”添加软件站点:http://bitstrings.github.com/m2e-connectors-p2/releases/

    选择“jaxb2 的 m2e 连接器”

    安装该插件后,jaxb2 插件应该与新版本的 m2e 正确集成。

    此信息来自:https://bugs.eclipse.org/bugs/show_bug.cgi?id=350299

    【讨论】:

    • 还有另一个可用的插件 - 请参阅 comment 16, same bugzilla report
    • 两者有什么区别?
    • 第二个插件(bitstrings.github.com/m2e-connectors-p2/releases)除了支持org.jvnet.jaxb2.maven2:maven-jaxb2-plugin之外,还支持org.codehaus.mojo:jaxb2-maven-plugin。
    • 在我的特殊情况下(Eclipse Mars SR1),当前最新版本的org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.0 未被 Bitstrings 连接器识别。降级到版本 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.1 有帮助。
    • @Abdull 我遇到了同样的问题,这似乎是插件本身的问题。它在 0.13.1 中得到纠正。修改 pom.xml 以使用 0.13.1 或更高版本。
    【解决方案3】:

    如果您无法使 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>
    

    【讨论】:

      【解决方案4】:

      好吧,你需要右键点击“target/generated-sources/xjc”并选择类似“Build Path -> Use as source folder”

      【讨论】:

        【解决方案5】:

        在等待解决此问题时,我正在使用以下临时解决方法:

        我们在单独的 maven 模块中拥有 jaxb 插件和生成的类。在 Eclipse 中,我只能在该模块上“禁用 Maven 自然”。然后我可以在我们的大型 maven 项目的其余部分中使用 Indigo 和 m2eclipse,它将取决于 jaxb 模块的 jar(必须从命令行构建)。这对我来说很有效,因为我们的项目都是这样组织的。

        【讨论】:

          猜你喜欢
          • 2011-10-25
          • 1970-01-01
          • 1970-01-01
          • 2012-07-09
          • 2012-03-22
          • 2018-02-06
          • 2012-08-09
          • 2013-10-21
          • 1970-01-01
          相关资源
          最近更新 更多