【问题标题】:How to reference a parent project from a child如何从子项目中引用父项目
【发布时间】:2012-03-04 01:34:26
【问题描述】:

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

  • gwt 应用程序
  • 型号
  • webapp(取决于 gwt-app 和型号)

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

【问题讨论】:

    标签: maven


    【解决方案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 不会在多模块项目中搜索未安装的依赖项。

    【讨论】:

      【解决方案2】:

      如果你让你的父 pom 像这样进行常规设置

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

      然后这些组中的任何内容都会自动继承到子 pom.xml 中。子 pom 只需要其中的父部分:

      <parent>
      </parent>
      

      您甚至不需要以这种方式在子 pom 中声明相同的插件或依赖项。如果您使用子 pom 或在父 pom 中,或者您想覆盖父 pom 中的某些内容,您只需要在子 pom 中列出插件或依赖项。实际上,我刚刚经历了这周的所有工作,现在我的构建工作良好(在父 pom 中有更多东西的小型子 pom,如插件配置)。

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

      【讨论】:

        猜你喜欢
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 2019-12-16
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        相关资源
        最近更新 更多