Maven依赖树 - Spring的一些依赖使用旧版本

时间:2017-02-26 16:13:48

标签: java spring maven spring-mvc dependencies

我对Maven没有那么多经验(我提前道歉,如果你会发现以下情况微不足道)。在POM.xml中,我指定了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$ 

1 个答案:

答案 0 :(得分: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>