将引用的eclipse项目添加到maven dependancies

现在,我有两个Eclipse项目 – 他们都使用Maven 2来实现他们所有的jar依赖性。

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

mvn compile 

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

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

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

也许您只是通过eclipse configure-> build path引用其他项目。 只要您使用Eclipse构建项目,这就可以工作。

尝试在项目栏中运行第一个mvn install(为了将Bar放在maven存储库中),然后将依赖项添加到Foo的pom.xml中。

那应该有用!

查看m2eclipse插件。 当您更改pom时,它将自动并动态更新项目构建路径。 没有必要运行mvn eclipse:eclipse

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

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

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

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

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

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

然后当你运行mvn eclipse:来自Parent的根目录的eclipse时,maven将为A和B生成eclipse项目,并且它将B作为A类路径中的必需项目。

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

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

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

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

我只需要这样做,我需要使用外部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. 然后在弹出窗口中单击“确定”。

如果您引用本地项目,但其版本已更新(通常增加),它可能只能在您的本地仓库中找到,您必须在POM中更新它(可能已修复)的版本。


我们有一个“共同项目”(在任何地方使用),由于我们通过源代码控制标记它,因此不一定需要进行版本控制。 所以要么

  • 保持固定版本或
  • 使用特殊的LATEST版本引用它

总是保持安全是很好的解决方法。