将JAR Maven项目包含在WAR Maven项目中

时间:2014-01-16 11:14:22

标签: java eclipse maven include dependencies

我有两个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中寻找相关问题的答案,我也无法使其发挥作用。


  • Eclipse Kepler
  • Maven 3.0.4
  • Eclipse WTP(Juno)1.0.1的Maven Integration

2 个答案:

答案 0 :(得分:3)

除非您在project1上运行maven install。它不会作为jar文件打包到您的.m2存储库中,因此它不会在project2的pom文件中解析。

这与使用第三方jar文件类似。但是没有它在.m2存储库中。即使在那种情况下,你也会遇到同样的问题。

对于您的项目2,项目1被视为独立的第三方jar文件。 它需要位于您的.m2存储库中,以便它可以解析它。

答案 1 :(得分:1)

为确保Eclipse WTP了解您的项目彼此依赖,您需要为两者定义多模块父项目。 否则,每次更新它时都需要“mvn install”project1,并且您将看到依赖关系经历了〜/ .m2。

网上有很多关于多模块项目的资源 - 您需要做的最大选择是您是否需要平面布局(所有项目目录,包括父模块项目的目录,在同一个基本目录中)或分层布局(父模块项目目录包含子模块项目目录)。