我有一个多模块项目这样引用父项目:如何从孩子
- GWT应用程序内
- 模型
- web应用(取决于GWT应用程序内和型号)
当我尝试执行webapps中的任何目标,例如,启动jetty,构建失败,因为maven找不到它的依赖关系(我没有将模块安装到本地repo中)。有没有一种可能的方法来引用父pom,以便当我在子模块中运行任何目标时,它的所有依赖项都将被编译(重新编译)?
我有一个多模块项目这样引用父项目:如何从孩子
当我尝试执行webapps中的任何目标,例如,启动jetty,构建失败,因为maven找不到它的依赖关系(我没有将模块安装到本地repo中)。有没有一种可能的方法来引用父pom,以便当我在子模块中运行任何目标时,它的所有依赖项都将被编译(重新编译)?
您的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会在多模块项目中搜索未安装的依赖关系。
如果你让你的父POM只是常规设置像
<plugins>
</plugins>
<dependencies>
</dependencies>
然后,这些团体的任何自动继承到子POM。儿童POM只需要在它的父节:
<parent>
</parent>
你甚至都不需要声明相同的插件或依赖于这种方式,孩子聚甲醛。你只需要在子pom中列出插件或依赖关系,如果你使用或在父pom中,或者你想覆盖父pom中的某些东西。我其实刚刚完成了本周的所有工作,并且让我的构建现在很好地工作(小的孩子poms在父pom中有更多的东西,比如插件配置)。
我问了一个关于这个可能对你有帮助的问题: Maven - Parent Pom - Child Inheritance