我有一个关于排除maven依赖的问题。考虑以下几点
<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设置了一个排除,但它不起作用。请帮帮忙。
发布于 2012-02-03 04:07:18
您可以利用dependency management mechanism。
如果使用所需的3.1.0版本集在pom的<dependencyManagement>部分为spring-security-web和spring-web创建条目,则工件的托管版本将覆盖可传递依赖关系树中指定的那些。
我不确定这是否真的节省了你的代码,但它是一个更干净的解决方案。
发布于 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元素相当于一个环境变量,它允许您在不指定版本号的情况下声明项目下的任何依赖项。
举个例子:
<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。
https://stackoverflow.com/questions/9119055
复制相似问题