Java 将引用的Eclipse项目添加到Maven依赖项

Java 将引用的Eclipse项目添加到Maven依赖项,java,eclipse,maven-2,Java,Eclipse,Maven 2,现在,我有两个Eclipse项目——它们都使用Maven 2实现所有的jar依赖性 在Eclipse中,我将ProjectFoo包含在ProjectBar的构建路径中,这样我就可以使用ProjectBar中的Foo类。这在Eclipse land中非常有效,但当我尝试时: mvn compile 在Bar的目录中,它失败了,因为Maven不知道Eclipse构建路径中的项目到项目的关系 如果我使用Ant,我只会用它来做一些愚蠢的事情,比如将foo.jar复制到project Bar的类路径中

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

在Eclipse中,我将ProjectFoo包含在ProjectBar的构建路径中,这样我就可以使用ProjectBar中的Foo类。这在Eclipse land中非常有效,但当我尝试时:

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

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


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

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

可能您只是通过Eclipse configure->build path引用了其他项目。只要您使用Eclipse构建项目,这种方法就可以工作

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

那应该行的

不是一个完整的答案:
Bar的pom需要包含Foo,以便使用maven进行编译。
我也对这个问题感兴趣,但从如何让eclipse识别maven添加的依赖关系的角度来看,实际上是同一工作区中的另一个项目。我当前在执行
mvneclipse:eclipse

检查插件后更改了构建路径。当您更改pom时,它将自动动态更新项目构建路径。不需要运行
mvneclipse:eclipse

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

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

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


如果您想用一个命令构建这两个项目,那么您可能会觉得很有趣。

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

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

然后,当您从父级的根运行mvneclipse:eclipse时,maven将为A和B生成eclipse项目,并且在A的类路径中将B作为必需的项目

您可以从父项目的根目录运行mvn安装,以编译这两个项目


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

如果您引用的是本地项目,但其版本已更新(通常增加),则可能只能在本地回购中找到,并且您必须在POM中更新该项目的(可能已修复)版本


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

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

都是很好的解决方法,总是安全的。

我只需要这样做,我需要它来使用外部mvn clean install命令进行构建。下面是在Eclipse中配置此功能的正确方法。(项目B作为a的依赖项)

  • 在Eclipse中打开项目A的pom.xml
  • 转到
    依赖项
    选项卡
  • 点击页面的中间(左边的依赖框)< < /LI> >代码> Addio.<代码>按钮
  • 在弹出窗口中,在一行下方应该有一个框,上面有文本,上面写着
    输入groupId、artifactId或sha1前缀或模式(*):
    。在此框中输入项目B的工件ID
  • 双击要作为依赖项添加到此项目的jar
  • 之后可能需要更新项目
  • 在包资源管理器中右键单击项目A
  • Maven->更新项目
  • 然后在弹出窗口中点击OK

  • aa。。射击我以前做过这个。但是现在(在家里)找不到。。如果我回到办公室时仍然没有人回答。。我会帮你查的。这正是人们想要避免的。如果你在发展,你总是在改变。每次都想安装mvn的人。