排除 Maven 依赖项

排除 Maven 依赖项

问题描述:

我有一个关于排除 maven 依赖项的查询.考虑以下

I have a query about exclusion of maven dependencies . Consider the following

   <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
        <version>${spring-security.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>3.1.0.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>
    <dependency>

我正在努力实现从 Spring 3.0.6 到 3.1.0 的过渡.Spring security 3.1.0 依赖于 spring-security-web 3.0.6 版本,而后者又依赖于 spring-web 3.0.6 .我需要把它全部带到 3.1.0 .所以我从 Spring security 中排除了 spring-security-web ,对 spring-security-web 3.1.0 有一个单独的依赖项,它反过来排除了 spring-web 3.0.6 版本,我提供了一个单独的 spring-web 3.1.0 版本.这项工作,但我觉得会有一个更简单的方法.我尝试在 Spring 安全性下排除 spring web,但它没有用.请帮忙.

I am trying to achieve a transition from Spring 3.0.6 to 3.1.0 . Spring security 3.1.0 had a dependency on spring-security-web version 3.0.6 which in turn had a dependency on spring-web 3.0.6 . I need to bring it all to 3.1.0 . So I exclude spring-security-web from Spring security , have a separate dependency for spring-security-web 3.1.0 which in turn excludes the spring-web 3.0.6 version and I provide a separate spring-web 3.1.0 version . This work but I feel there would be a much easier approach . I tried putting an exclusion for spring web under Spring security but it didn't work . Please help .

您可以利用 依赖管理机制.

如果您在 pom 的 <dependencyManagement> 部分为 spring-security-webspring-web 创建条目所需的 3.1.0 版本集,工件的托管版本将覆盖传递依赖树中指定的那些.

If you create entries in the <dependencyManagement> section of your pom for spring-security-web and spring-web with the desired 3.1.0 version set the managed version of the artifact will override those specified in the transitive dependency tree.

我不确定这是否真的为您节省了任何代码,但 IMO 是一个更简洁的解决方案.

I'm not sure if that really saves you any code, but it is a cleaner solution IMO.