Maven - 依赖于多模块聚合器项目

时间:2017-04-04 10:16:48

标签: java spring maven

我有一个多模块maven项目,其结构如下:

projectA-parent
  - module-1
  - module-2

我有另一个项目,我希望将projectA-parent中的所有模块作为运行时依赖项引入(它是一个Spring应用程序,projectA-parent中的每个模块都包含我想要的Spring服务能够自动装配)。

我想做的事情就像是

<dependency>
    <groupId>projectA-group</groupId>
    <artifactId>projectA-parent</artifactId>
    <scope>runtime</scope>
</dependency>

因此,如果我向projectA-parent添加另一个模块,它会自动作为运行时依赖项引入(即,我不想将每个新模块作为依赖项添加到我的Spring应用程序中我添加它们)。这样的事情有可能吗?

2 个答案:

答案 0 :(得分:2)

我想我只是添加了一个引用项目中其他模块的模块,例如:

projectA-parent
  - module-1
  - module-2
  - module-deps

module-deps作为jar或pom,取决于module-1module-2。 在添加更多模块时,您必须更新module-deps,但至少它只在一个地方。

答案 1 :(得分:1)

你必须使用

<dependencies>
  <dependency>
     <groupId>projectA-parent-groupId</groupId>
     <artifactId>projectA-parent-artifactId</artifactId>
     <type>pom</type>
  </dependency>
</dependencies>

这会将com.my:commons-deps中声明的所有依赖项传递给您当前的POM。

使用

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>...</groupId>
            <artifactId>...</artifactId>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

作为一个简单的包含&#39;您的依赖关系管理中的工件版本。因此,它不会在您的项目中添加任何依赖项。

<强>更新

另一个方法是使用BOM(物料清单)。查看此link以了解BOM的用法。它隐藏在底部的某个地方。

您可以创建一个BOM表,将所有模块列为依赖项,然后您可以将BOM包含在pom.xml中,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>your_bom_group_id</groupId>
            <artifactId>your_bom_artifact_id</artifactId>
            <version>you_bom_version</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>