我有两个Maven项目:Project1打包到JAR,Project2打包到WAR。
<!-- Project1's POM -->
<groupId>foobar</groupId>
<artifactId>project1</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<!-- Project2's POM -->
<groupId>foobar</groupId>
<artifactId>project2</artifactId>
<version>1.0</version>
<packaging>war</packaging>
我想将Project1包含到Project2中,所以在Project2的POM中,我添加了:
<dependency>
<groupId>foobar</groupId>
<artifactId>project1</artifactId>
<version>1.0</version>
</dependency>
但Project2无法解决此依赖关系。
在Project2的属性中,Java Build Path&gt;库,我可以看到Project2在我的“〜/ .m2”文件夹中查找“project1-1.0.jar”。这是正常的吗?
有没有人遇到这个问题,最后找到解决方案?即使在SO中寻找相关问题的答案,我也无法使其发挥作用。
答案 0 :(得分:3)
除非您在project1
上运行maven install。它不会作为jar文件打包到您的.m2
存储库中,因此它不会在project2
的pom文件中解析。
这与使用第三方jar文件类似。但是没有它在.m2存储库中。即使在那种情况下,你也会遇到同样的问题。
对于您的项目2,项目1被视为独立的第三方jar文件。
它需要位于您的.m2
存储库中,以便它可以解析它。
答案 1 :(得分:1)
为确保Eclipse WTP了解您的项目彼此依赖,您需要为两者定义多模块父项目。 否则,每次更新它时都需要“mvn install”project1,并且您将看到依赖关系经历了〜/ .m2。
网上有很多关于多模块项目的资源 - 您需要做的最大选择是您是否需要平面布局(所有项目目录,包括父模块项目的目录,在同一个基本目录中)或分层布局(父模块项目目录包含子模块项目目录)。