【问题标题】:Maven multi module dependency sharingMaven多模块依赖共享
【发布时间】:2015-05-04 10:35:58
【问题描述】:

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

如果我有这个:

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

我希望每个模块都使用此依赖项,但我不会将它放在每个 pom.xml 中。所以基本上,我怎样才能在模块 B 和 C 之间共享这个依赖关系而不把这个依赖关系放在项目 A 中并使 B 和 C 从 A 继承?

【问题讨论】:

标签: maven multi-module


【解决方案1】:

如果您有多个共享依赖项,一个选项是定义一个单独的依赖项 POM,您可以在其中定义所有共享依赖项(在 &lt;dependencies&gt; 部分,不是 &lt;dependencyManagement&gt; 部分)和然后将此 POM 定义为模块中的依赖项。通过将此共享依赖项定义为 pom 正常依赖项,它的所有依赖项都作为传递依赖项包含在您的模块中。

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

例如:

依赖 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>

模块 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>groupModules<groupId>
<artifactId>module-b</artifactId>
<name>Module B</name>
<dependencies>
    <!-- single dependency to the shared-dependencies pom instead of multiple dependencies -->
    <dependency>
        <groupId>shared-dependencies-group</groupId>
        <artifactId>shared-dependencies</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
        <type>pom</type>
    </dependency>
</dependencies>

显然在模块 C 的 pom 中也会这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 2011-09-14
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多