Maven配置文件删除依赖项

时间:2012-12-11 11:36:59

标签: maven maven-profiles

我有pom声明的依赖关系A,B和C.是否可以创建一个删除依赖关系的配置文件,这样当我使用该配置文件进行编译时,我最终会得到编译后的依赖关系A和B(没有C) ?

2 个答案:

答案 0 :(得分:14)

我不知道在配置文件中排除顶级依赖项的方法(<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'配置文件进行编译将会失败。

您的使用案例不明确。也许其他一些解决方案,例如optional dependenciesprovided dependencies也可以满足您的需求。看看这些可能性。

答案 1 :(得分: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>

然后你&#34;排除&#34;通过将范围更改为测试来实现依赖性。并不适合所有用法,但也可以作为另一种选择。