Maven多模块依赖共享

时间:2015-05-04 10:35:58

标签: maven multi-module

我有一个maven多模块项目,A作为父项目。 B和C是模块。如果我不希望B和C从A继承,我如何分享B和C之间的某些依赖关系? (所以我不能将这些依赖关系从B和C中放入A继承它们)<​​/ p>

如果我有这个:

    <dependency>
        <groupId>groupCommon</groupId>
        <artifactId>IdCommon</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>

我希望每个模块都使用此依赖项,但我不想将它放在每个pom.xml中。基本上,如何在模块B和C之间共享这种依赖关系,而不将此依赖项放在项目A中,并使B和C继承自A?

1 个答案:

答案 0 :(得分:4)

如果您有多个共享依赖项,那么您可以选择一个单独的依赖项POM来定义所有共享依赖项(在<dependencies>部分,不是 {{1}然后将此POM定义为模块中的依赖项。通过将此共享依赖关系pom定义为普通依赖关系,它的所有依赖关系都包含为模块的传递依赖关系。

你显然仍然需要在每个模块pom中定义对这个pom的依赖关系,但现在它是一个依赖项而不是多个。

例如:

依赖关系pom

<dependencyManagement>

模块B pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>shared-dependencies-group</groupId>
<artifactId>shared-dependencies</artifactId>
<version>1.0</version>
<name>Shared Dependencies</name>
<dependencies>
    <dependency>
        <groupId>groupCommon</groupId>
        <artifactId>IdCommon1</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>groupCommon</groupId>
        <artifactId>IdCommon2</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>
    <!-- more dependencies -->
</dependencies>

显然,在模块C的pom中也是如此。