7

我有声明依赖项 A、B 和 C 的 pom。是否可以创建一个删除依赖项的配置文件,以便当我使用该配置文件编译时,我最终会得到例如编译的依赖项 A 和 B(没有 C)?

4

2 回答 2

15

我不知道如何在配置文件中排除顶级依赖项(<exlusions>仅适用于传递依赖项)。但是您可以在默认配置文件中指定“正常”依赖项,并在单独的配置文件中指定减少的依赖项,例如:

<profiles>

    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
            </dependency>
        </dependencies>
    </profile>

    <profile>
        <id>excludeDependency</id>
        <dependencies>
        </dependencies>
    </profile>

</profiles>

如果您在某处使用 log4j,使用“excludeDependency”配置文件编译将失败。

您的用例不清楚。也许其他一些解决方案(例如可选依赖项提供的依赖项)也可以满足您的需求。看看这些可能性。

于 2012-12-11T12:11:25.827 回答
3

在 Maven 中,配置文件是对基本配置文件的附加,所以我发现这种使用模式有利于排除依赖项:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

<profiles>
    <profile>
        <id>Exclude</id>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

然后通过更改要测试的范围来“排除”依赖项。不适合所有用途,但只是作为另一种选择。

于 2015-03-12T11:16:17.780 回答