如何从子项引用父项目

时间:2012-03-03 06:20:37

标签: maven

我有一个像这样的多模块项目:

  • GWT-应用
  • 模型
  • webapp(取决于gwt-app和型号)

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

2 个答案:

答案 0 :(得分:1)

你的pom文件的例子很棒但是在多模块项目中我总是在dependencyManagement标签中声明父pom中的依赖项:

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

在模块pom中,我只关注没有版本的依赖:

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

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

要记住的是,maven中的模块不会从父级继承依赖项。您必须声明模块本身使用的依赖项。

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

答案 1 :(得分:0)

如果你让你的父pom有像

这样的常规设置
<plugins>
</plugins>
<dependencies>
</dependencies>

然后,这些组中的任何内容都会自动继承到子pom中。儿童pom只需要其中的父节:

<parent>
</parent>

您甚至不需要以这种方式在子pom中声明相同的插件或依赖项。您只需要在子pom中列出插件或依赖项,如果您使用或在父pom中,或者您想覆盖父pom中的某些内容。我实际上刚刚经历了这个星期的整个过程,并且我的构建现在运行得很好(小型poms在父pom中有更多东西,如插件配置)。

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