CXF和ACEGI的Maven传递依赖问题

时间:2014-02-20 21:21:06

标签: maven

我有一个最初具有以下依赖关系的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?

感谢。

0 个答案:

没有答案