【问题标题】:Adding referenced Eclipse projects to Maven dependencies将引用的 Eclipse 项目添加到 Maven 依赖项
【发布时间】:2010-09-13 06:37:34
【问题描述】:

现在,我有两个 Eclipse 项目——它们都使用 Maven 2 来实现 jar 依赖。

在 Eclipse 中,我将项目 Foo 包含在项目 Bar 的构建路径中,这样我就可以使用项目 Bar 中的 Foo 类。这在 Eclipse 领域非常有效,但是当我尝试时:

mvn compile 

在 Bar 的目录中,它失败了,因为 Maven 不知道 Eclipse 的构建路径中的项目到项目的关系。

如果我使用 Ant,我只会用它来做一些愚蠢的事情,比如将 foo.jar 复制到项目 Bar 的类路径中,但据我所知,在 Maven 领域做的事情要少得多。

我想知道是否有针对此类问题的标准解决方法 - 似乎相当普遍,我只是缺少一些关于 Maven 工作原理的基本知识。

【问题讨论】:

  • aa.. 拍摄.. 我以前做过。但是现在(在家里)找不到。。如果我回到办公室时仍然没有答案。我会为您查找。

标签: java eclipse maven-2


【解决方案1】:

查看m2eclipse 插件。当您更改 pom.xml 时,它将自动并动态更新项目构建路径。无需运行mvn eclipse:eclipse

该插件还将检测是否有任何依赖项位于同一工作区中,并将该项目添加到构建路径中。

理想情况下,如果您使用 m2eclipse,您永远不会手动更改项目构建路径。您总是会编辑 pom.xml,这是正确的做法。

如前所述,Maven 不会知道 Eclipse 项目的构建路径。您确实需要将所有依赖项添加到 pom 中,并且您需要通过运行 mvn install 确保首先构建和安装所有依赖项。

如果您想使用单个命令构建两个项目,那么您可能会发现 project aggregation 很有趣。

【讨论】:

    【解决方案2】:

    也许您仅通过 Eclipse 配置-> 构建路径引用了另一个项目。只要您使用 Eclipse 构建您的项目,它就可以工作。

    尝试先在项目 Bar 中运行 mvn install(以便将 Bar 放入您的 Maven 存储库),然后将依赖项添加到 Foo 的 pom.xml。

    应该可以!

    【讨论】:

      【解决方案3】:

      我只需要这样做,并且需要使用外部 mvn clean install 命令来构建它。这是在 Eclipse 中配置它的正确方法。 (项目B作为A的依赖)

      1. 在 Eclipse 中打开项目 A 的 pom.xml。
      2. 转到Dependencies 标签。
      3. 单击页面中间的Add... 按钮(用于左侧的依赖项框)
      4. 在弹出窗口中,一行下方应有一个框,其上方的文字为Enter groupId, artifactId or sha1 prefix or pattern (*):。在此框中输入项目 B 的工件 ID。
      5. 双击要作为依赖项添加到此项目的 jar
        1. 之后您可能需要更新项目。
        2. 在您的包资源管理器中右键单击项目 A
        3. Maven -> 更新项目...
        4. 然后在弹出窗口中点击确定。

      【讨论】:

        【解决方案4】:

        如果您引用了一个本地项目,但它的版本已经更新(通常会增加),它可能只能在您的本地存储库中找到,您必须在您的 POM 中更新它的(可能已修复)版本.


        我们有一个“通用项目”(随处使用),它不一定需要版本控制,因为我们通过源代码控制对其进行标记。所以要么

        • 将其保持在固定版本或
        • 用特殊的LATEST 版本引用它

        是始终保持安全的良好解决方法。

        【讨论】:

          【解决方案5】:

          您可能想尝试另一种方法,您有一个父 maven 项目和两个子项目。比方说:

          父级(pom.xml 引用了两个子项目/模块) --> A(取决于 B) --> 乙

          那么当你从Parent的根目录运行mvn eclipse:eclipse时,maven会为A和B生成eclipse项目,并且它将B作为A的classpath中的必需项目。

          您可以从 Parent 的根目录运行 mvn install 来编译两个项目。

          要完成设置,您必须将 A 和 B 都导入 Eclipse,确保没有选中“将项目复制到工作区”。

          【讨论】:

            【解决方案6】:

            不是一个完整的答案:
            Bar 的 pom 需要包含 Foo 才能使用 maven 编译它。
            我也对这个问题感兴趣,但从如何让 eclipse 识别 maven 添加的依赖项的角度来看,实际上是同一工作区中的另一个项目。我目前在执行mvn eclipse:eclipse后更改构建路径@

            【讨论】:

              【解决方案7】:

              我认为处理它的最佳方法是让 Bar 像 Foo 一样成为一个 Maven 项目,然后 mvn install 它可以在您的本地 Maven 存储库中使用。缺点是每次您希望 Maven 看到您对 Bar 所做的更改时都必须安装该项目。

              【讨论】:

              • 这正是人们想要避免的。如果你正在开发,你会一直在改变东西。谁愿意每次都mvn install
              猜你喜欢
              • 2012-11-28
              • 1970-01-01
              • 2012-01-20
              • 2013-02-13
              • 2018-06-30
              • 2017-09-18
              • 2017-06-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多