2012-03-03 207 views
0

我有一个多模块项目这样引用父项目:如何从孩子

  • GWT应用程序内
  • 模型
  • web应用(取决于GWT应用程序内和型号)

当我尝试执行webapps中的任何目标,例如,启动jetty,构建失败,因为maven找不到它的依赖关系(我没有将模块安装到本地repo中)。有没有一种可能的方法来引用父pom,以便当我在子模块中运行任何目标时,它的所有依赖项都将被编译(重新编译)?

回答

1

您的POM文件的一个例子将是巨大的,但在多模块项目,我一直在dependencyManagement标签父POM声明的依赖关系:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>group-a</groupId> 
     <artifactId>artifact-a</artifactId> 
     <version>1.0</version> 
     </dependency> 
... 

在模块POM我只是delcare的依赖,而不版本:

<dependencies> 
    <dependency> 
     <groupId>group-a</groupId> 
     <artifactId>artifact-a</artifactId> 
    </dependency> 
... 

这样确保每个模块使用相同的版本。

需要记住的是,maven中的模块不会继承父类的依赖关系。您必须声明模块本身中使用的依赖关系。

另一件事是,我相信当你在IDE之外运行(它搜索工作区的依赖关系)时,你需要在你的本地仓库中安装每个模块。如果你没有在父pom上执行,我不认为maven会在多模块项目中搜索未安装的依赖关系。

0

如果你让你的父POM只是常规设置像

<plugins> 
</plugins> 
<dependencies> 
</dependencies> 

然后,这些团体的任何自动继承到子POM。儿童POM只需要在它的父节:

<parent> 
</parent> 

你甚至都不需要声明相同的插件或依赖于这种方式,孩子聚甲醛。你只需要在子pom中列出插件或依赖关系,如果你使用或在父pom中,或者你想覆盖父pom中的某些东西。我其实刚刚完成了本周的所有工作,并且让我的构建现在很好地工作(小的孩子poms在父pom中有更多的东西,比如插件配置)。

我问了一个关于这个可能对你有帮助的问题: Maven - Parent Pom - Child Inheritance