我有一个最初具有以下依赖关系的pom文件:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.5.2</version>
<scope>runtime</scope>
</dependency>
根据mvn dependency:tree,上面的依赖项具有以下传递依赖项:
[INFO] \- org.apache.cxf:cxf-rt-transports-http:jar:2.5.2:runtime
[INFO] +- org.apache.cxf:cxf-rt-transports-common:jar:2.5.2:runtime
[INFO] \- org.springframework:spring-web:jar:3.0.6.RELEASE:runtime
[INFO] +- aopalliance:aopalliance:jar:1.0:runtime
[INFO] +- org.springframework:spring-beans:jar:3.0.6.RELEASE:runtime
[INFO] +- org.springframework:spring-context:jar:3.0.6.RELEASE:runtime
[INFO] | +- org.springframework:spring-aop:jar:3.0.6.RELEASE:runtime
[INFO] | +- org.springframework:spring-expression:jar:3.0.6.RELEASE:runtime
[INFO] | \- org.springframework:spring-asm:jar:3.0.6.RELEASE:runtime
[INFO] \- org.springframework:spring-core:jar:3.0.6.RELEASE:runtime
然后我将以下依赖项添加到我的pom文件中:
<dependency>
<groupId>org.acegisecurity</groupId>
<artifactId>acegi-security-cas</artifactId>
<version>1.0.3</version>
</dependency>
当我运行mvn包时,它会删除cxf中的spring依赖项(即 - spring-beans-3.0.6.RELEASE.jar等...)并将它们替换为acegi插件的1.0版本。如果我运行依赖:树,它现在说如下:
[INFO] \- org.apache.cxf:cxf-rt-transports-http:jar:2.5.2:runtime
[INFO] \- org.apache.cxf:cxf-rt-transports-common:jar:2.5.2:runtime
如何强制maven使用cxf中的较新版本而不是acegi依赖中的旧版本?我尝试在acegi依赖项中添加一个排除项:
<dependency>
<groupId>org.acegisecurity</groupId>
<artifactId>acegi-security-cas</artifactId>
<version>1.0.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
但是,当我运行mvn包时,我现在没有获得spring-aop jar(它不包括cxf所需的版本或acegi安全性所包含的版本)。
我知道我可以手动写出来自cxf的每个传递依赖项。但是,有没有更好的方法可以让maven使用cxf中的spring依赖项而不是旧的acegi?
感谢。