子poms可以继承父pom中定义的依赖项排除吗?

时间:2016-10-03 15:39:42

标签: maven

我不确定这是否是Maven的支持。我感谢任何帮助。

我有一个定义依赖项和排除项的父pom。我不能改变父pom:

<dependency>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.0</version>
    <exclusions>
        <!-- this exclusion needs to be inherited by all children -->
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </exclusion>
    </exclusions>
</dependency>

然后在子pom中,我需要从父级中的相同依赖项中排除不同的依赖项。像这样

<dependency>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.0</version>
    <exclusions>
        <!-- this exclusion is just for the child -->
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

但是,如果我这样做,孩子将排除(正确)slf4j jar,但它不会排除spring-cloud-config-server jar,除非我在子声明中重申父排除依赖性。

我意识到我可以复制它,但那很麻烦,而且我意识到将孩子的排斥推到父母那里很容易,但是我会强迫所有其他孩子被排除在外。

我希望Maven在父和子中以不同方式声明相同的依赖项时合并依赖项排除信息。

这可能吗?

1 个答案:

答案 0 :(得分:3)

在您的父母pom中:

city_type

在你的孩子pom:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>foo</groupId>
            <artifactId>bar</artifactId>
            <version>1.0</version>
            <exclusions>
                <!-- this exclusion needs to be inherited by all children -->
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-config-server</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>