2014-01-16 177 views
1

我有两个Maven项目:Project1打包为JAR,而Project2打包为WAR。将JAR Maven项目包含到WAR Maven项目中

<!-- 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> Libraries中,我可以在我的“〜/ .m2”文件夹中看到Project2寻找“project1-1.0.jar”。这是正常的吗?

有没有人遇到过这个问题,最后找到解决办法?即使在查看SO中的相关问题的答案时,我也无法使其工作。


  • Eclipse的开普勒
  • 的Maven 3.0.4
  • Maven的集成为Eclipse WTP(麦浚龙)1.0.1
+1

除非你在project1上运行maven install。它不会被打包成一个jar文件到您的.m2版本库中,因此它不会在project2的pom文件中解析。 – Hrishikesh

回答

3

除非你运行Maven安装到您的project1。它不会作为jar文件打包到您的.m2存储库中,因此它不会在project2的pom文件中解决。

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

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

1

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

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

+0

有趣,谢谢! – sp00m

相关问题