首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >排除Maven依赖项

排除Maven依赖项
EN

Stack Overflow用户
提问于 2012-02-03 03:57:55
回答 2查看 147.5K关注 0票数 32

我有一个关于排除maven依赖的问题。考虑以下几点

代码语言:javascript
运行
复制
   <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-security-web版本依赖于spring-web 3.0.6。我需要将其全部带到3.1.0。所以我从Spring安全中排除了spring- security -web,对spring-security-web 3.1.0有一个单独的依赖,它反过来又排除了spring-web 3.0.6版本,我提供了一个单独的spring-web 3.1.0版本。这项工作,但我觉得会有一个简单得多的方法。我试着在spring安全性下为Spring web设置了一个排除,但它不起作用。请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-03 04:07:18

您可以利用dependency management mechanism

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

我不确定这是否真的节省了你的代码,但它是一个更干净的解决方案。

票数 27
EN

Stack Overflow用户

发布于 2012-02-03 04:33:15

Global exclusions look like they're being worked on,但在那之前...

Sonatype maven reference (页面底部):

顶级POM中的

依赖关系管理不同于仅定义对广泛共享的父POM的依赖关系。对于初学者,所有依赖项都是继承的。如果mysql-connector-java被列为顶层父项目的依赖项,那么层次结构中的每个项目都会有一个对此依赖项的引用。使用dependencyManagement可以合并和集中依赖项版本的管理,而不是添加不必要的依赖项,而无需添加所有子项继承的依赖项。换句话说,dependencyManagement元素相当于一个环境变量,它允许您在不指定版本号的情况下声明项目下的任何依赖项。

举个例子:

代码语言:javascript
运行
复制
  <dependencies>
    <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>3.0.5.RELEASE</version>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
    </dependencies>
  </dependencyManagement>

它不会使代码总体上变得不那么冗长,但它确实使代码在重要的地方变得不那么冗长。如果您仍然希望它不那么冗长,您也可以从Sonatype参考中使用follow these tips

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9119055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档