2008-09-25 118 views
20

,我有两个Eclipse项目 - 他们都使用Maven 2的所有jar的依赖善良。添加引用的Eclipse项目现在到Maven依赖关系

在eclipse中,我将项目Foo包含在项目Bar的构建路径中,以便我可以使用项目Bar中的Foo的类。这个作品真的很好在eclipse的土地,但是当我尝试:

mvn compile 

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

如果我使用的是ant,我只是用它来做一些傻事,比如将foo.jar复制到项目Bar的类路径中,但据我所知,在Maven-land中做的事情远没有这么做。

我想知道是否有这种类型的问题的标准解决方法 - 它似乎是相当普遍的,我只是缺少关于如何Maven的基本工作。

+0

aa ..拍..我以前做过这个。但现在找不到(在家)..如果在我回到办公室的时候仍然没有答案,我会为您查找。 – paan 2008-09-25 21:45:50

回答

17

也许你正在通过Eclipse引用其它项目配置 - >只有构建路径。只要你使用Eclipse来建立你的项目,这就可以工作。

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

这应该工作!

1

我认为处理它的最好方法就是使Bar成为一个像Foo一样的Maven项目,然后mvn install它就可以在您的本地Maven存储库中使用。其缺点是,你有你想要的Maven看到您对酒吧的变化,每次安装项目。

+0

这正是人们想要避免的。如果你正在开发,你总是会改变一些东西。每次谁会想`mvn install`。 – T3rm1 2017-08-10 09:29:21

1

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

8

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

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

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

如前所述,Maven不会了解Eclipse项目的构建路径。你需要将所有的依赖添加到聚甲醛,你需要确保所有的依赖关系是建立和运行mvn install首先安装。

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

2

您可能想尝试一种替代方法,其中您有一个父Maven项目和两个子项目。让我们说:

父(pom。XML有两个孩子的项目/模块) 引用 - > A(取决于B) - “乙

那么当你运行mvn日食:日食从父根,Maven会产生一个Eclipse项目和B,它将B作为A的类路径中的必需项目。

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

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

0

如果你引用了一个本地项目,但它的版本已经更新(通常增加),它可能只能在你的本地仓库中找到,你必须在你的POM中更新它的(可能是固定的)版本)。


我们有一个“共同项目”(到处被使用),它不一定需要,因为我们通过源代码控制标记它来进行版本控制。所以无论是

  • 将其保持在一个固定的版本或
  • 与特殊LATEST版本

引用它是好的解决方法永远是在安全方面。

0

我只需要做到这一点,我需要它与外部mvn干净安装命令。这里是在Eclipse中配置这个的正确方法。 (将项目B作为A的依赖项)

  1. 在Eclipse中打开项目A的pom.xml。
  2. 转至Dependencies选项卡。
  3. 在页面(左侧依赖盒)
  4. 在弹出的中间点击Add...按钮,应该根据与文本行的盒子上面它说Enter groupId, artifactId or sha1 prefix or pattern (*):。将项目B的工件ID输入到此框中。
  5. 双击你想作为一个依赖添加到项目
    1. 您可能需要后更新项目的罐子。
    2. 右键单击一个项目在你的Package Explorer
    3. 的Maven - >更新项目...
    4. 然后在弹出的点击OK。
相关问题