Maven:删除单个传递依赖项

fly*_*ire 26 java dependencies maven-2

我的项目包含一个jar文件,因为它被列为传递依赖项.

但是,我不仅验证了我不需要它,但它会导致问题,因为jar文件中的类会影响我在另一个jar文件中需要的类.

如何从传递依赖中遗漏一个jar文件?

Dav*_*itz 32

您可以通过以下方式排除依赖项:

        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
                <version>2.5.6</version>
                <exclusions>
                        <exclusion>
                                <groupId>commons-logging</groupId>
                                <artifactId>commons-logging</artifactId>
                        </exclusion>
                </exclusions>
        </dependency>
Run Code Online (Sandbox Code Playgroud)


Pav*_*vel 15

正确的方法是使用排除机制,但是有时您可能更喜欢使用以下hack来避免在许多工件具有您希望忽略的相同传递依赖性时添加大量排除.您可以使用"已提供"范围定义其他依赖项,而不是指定排除项.这告诉Maven您将手动处理在运行时提供此工件,因此不会打包它.例如:

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
    </dependency>
    <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

副作用:您必须指定要忽略的工件版本,并在构建时检索其POM; 常规排除情况并非如此.如果您在防火墙后运行私有Maven存储库,这可能是一个问题.