2017-02-26 60 views
0

我对Maven没有太多的经验(如果您会发现下面的场景,我会提前道歉)。在pom.xml中,我指定的Spring版本:Maven依赖树 - Spring的一些依赖关系使用旧版本

<properties> 
... 
    <spring.version>4.3.6.RELEASE</spring.version> 
</properties> 

,然后,我用它为所有的Spring的依赖:

... 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
... 

但是,当我执行:mvn dependency:tree,我可以看到,一些依赖(例如:spring-core)使用旧版本号。你能解释一下吗?

Tracking admin$ mvn dependency:tree 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Tracking 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:3.0.0:tree (default-cli) @ Tracking --- 
[INFO] com.mycompany:Tracking:war:1.0-SNAPSHOT 
[INFO] +- javax.persistence:persistence-api:jar:1.0.2:compile 
[INFO] +- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided 
[INFO] +- com.sun.jersey:jersey-server:jar:1.2:compile 
[INFO] | +- com.sun.jersey:jersey-core:jar:1.2:compile 
[INFO] | | \- javax.ws.rs:jsr311-api:jar:1.1.1:compile 
[INFO] | \- asm:asm:jar:3.1:compile 
[INFO] +- com.sun.jersey.contribs:jersey-spring:jar:1.17:compile 
[INFO] | \- com.sun.jersey:jersey-servlet:jar:1.17:compile 
[INFO] +- org.springframework:spring-aop:jar:3.0.0.RC3:compile 
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | \- org.springframework:spring-asm:jar:3.0.0.RC3:compile 
[INFO] +- org.springframework:spring-aspects:jar:4.3.6.RELEASE:compile 
[INFO] | \- org.aspectj:aspectjweaver:jar:1.8.9:compile 
[INFO] +- org.springframework:spring-beans:jar:3.0.0.RC3:compile 
[INFO] +- org.springframework:spring-context:jar:3.0.0.RC3:compile 
[INFO] +- org.springframework:spring-context-support:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-core:jar:3.0.0.RC3:compile 
[INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] +- org.springframework:spring-expression:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-instrument:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-instrument-tomcat:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-jdbc:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-jms:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-messaging:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-orm:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-oxm:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-test:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-tx:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-web:jar:3.0.0.RC3:compile 
[INFO] +- org.springframework:spring-webmvc:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-webmvc-portlet:jar:4.3.6.RELEASE:compile 
[INFO] +- org.springframework:spring-websocket:jar:4.3.6.RELEASE:compile 
[INFO] +- javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:jar:1.2.1:compile 
[INFO] +- mysql:mysql-connector-java:jar:5.1.6:compile 
[INFO] +- xerces:xercesImpl:jar:2.11.0:compile 
[INFO] +- cglib:cglib:jar:3.2.4:compile 
[INFO] | +- org.ow2.asm:asm:jar:5.1:compile 
[INFO] | \- org.apache.ant:ant:jar:1.9.6:compile 
[INFO] |  \- org.apache.ant:ant-launcher:jar:1.9.6:compile 
[INFO] +- org.apache.commons:commons-lang3:jar:3.5:compile 
[INFO] +- org.liquibase:liquibase-maven-plugin:jar:3.0.4:compile 
[INFO] | +- org.apache.maven:maven-plugin-api:jar:2.0:compile 
[INFO] | +- org.apache.maven:maven-project:jar:2.0:compile 
[INFO] | | +- org.apache.maven:maven-profile:jar:2.0:compile 
[INFO] | | +- org.apache.maven:maven-model:jar:2.0:compile 
[INFO] | | +- org.apache.maven:maven-artifact-manager:jar:2.0:compile 
[INFO] | | | +- org.apache.maven:maven-repository-metadata:jar:2.0:compile 
[INFO] | | | \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-alpha-5:compile 
[INFO] | | +- org.codehaus.plexus:plexus-utils:jar:1.0.4:compile 
[INFO] | | +- org.apache.maven:maven-artifact:jar:2.0:compile 
[INFO] | | \- org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8:compile 
[INFO] | |  +- junit:junit:jar:3.8.1:compile 
[INFO] | |  \- classworlds:classworlds:jar:1.1-alpha-2:compile 
[INFO] | \- org.liquibase:liquibase-core:jar:3.0.4:compile 
[INFO] +- org.yaml:snakeyaml:jar:1.18:compile 
[INFO] \- xml-apis:xml-apis:jar:1.4.01:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 7.200 s 
[INFO] Finished at: 2017-02-26T18:02:17+02:00 
[INFO] Final Memory: 17M/220M 
[INFO] ------------------------------------------------------------------------ 
Tracking admin$ 
+0

你能分享你的pom.xml? (也如果存在一些父POM,它也可能是有用的) – Adonis

+0

嗨@Asettouf ...我想我找到了问题:http://stackoverflow.com/questions/10952603/maven-downloads-spring-aop- 3-0-0-rc3,而不是3-1-1决赛。显然,当我创建了Restful Web Services时,它生成了一个使用Jersey Import的Java文件。如果我在Maven中评论泽西岛的依赖关系,我注意到Spring核心使用了正确的版本号。非常感谢 ! –

+0

可能的重复[Maven下载Spring-AOP 3.0.0.RC3而不是3.1.1.Final](http://stackoverflow.com/questions/10952603/maven-downloads-spring-aop-3-0-0- rc3,而不是3-1-1最后) –

回答

0

如果你想使用的文物与版本匹配${spring.version},则需要手动提供核心的依赖。一些Spring依赖关系使用旧版本的工件。

另一个有用的东西是依赖排除,您可以在这里严格地向Maven说,您不希望使用来自其他依赖项的特定依赖项。排除

例子:

<dependencies> 
    <dependency> 
     <groupId>sample.spring</groupId> 
     <artifactId>spring-something</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
     <exclusion> 
      <groupId>sample.spring</groupId> <!-- exclude spring-other from spring-something --> 
      <artifactId>spring-other</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
</dependencies>