tags:

views:

58

answers:

4

Hi, I tried doing a mvn dependency:tree and I get a tree of dependencies.

My question is, My project depends on many modules which internally depends on many spring artifacts. There are a few version clashes. I want to upgrade all spring related libraries to say the latest one (2.6.x or above). What is the preferred way to do this?

Should I declare all the deps spring-context, spring-support (and 10 other artifacts) in my pom.xml and point them to 2.6.x ? Is there any other better method ?

[INFO] +- com.xxxx:yyy-jar:jar:1.0-SNAPSHOT:compile
[INFO] |  +- com.xxxx:zzz-commons:jar:1.0-SNAPSHOT:compile
[INFO] |  |  +- org.springframework:spring-dao:jar:2.0.7:compile
[INFO] |  |  +- org.springframework:spring-jdbc:jar:2.0.7:compile
[INFO] |  |  +- org.springframework:spring-web:jar:2.0.7:compile
[INFO] |  |  +- org.springframework:spring-support:jar:2.0.7:compile
[INFO] |  |  +- net.sf.ehcache:ehcache:jar:1.2:compile
[INFO] |  |  +- commons-collections:commons-collections:jar:3.2:compile
[INFO] |  |  +- aspectj:aspectjweaver:jar:1.5.3:compile
[INFO] |  |  +- betex-commons:betex-commons:jar:5.5.1-2:compile
[INFO] |  |  \- javax.servlet:servlet-api:jar:2.4:compile
[INFO] |  +- org.springframework:spring-beans:jar:2.0.7:compile
[INFO] |  +- org.springframework:spring-jmx:jar:2.0.7:compile
[INFO] |  +- org.springframework:spring-remoting:jar:2.0.7:compile
[INFO] |  +- org.apache.cxf:cxf-rt-core:jar:2.0.2-incubator:compile
[INFO] |  |  +- org.apache.cxf:cxf-api:jar:2.0.2-incubator:compile
[INFO] |  |  |  +- org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0-M1:compile
[INFO] |  |  |  +- org.codehaus.woodstox:wstx-asl:jar:3.2.1:compile
[INFO] |  |  |  +- org.apache.neethi:neethi:jar:2.0.2:compile
[INFO] |  |  |  \- org.apache.cxf:cxf-common-schemas:jar:2.0.2-incubator:compile

UPDATE : I have removed the extra question about "\-" so my question is now what the subject asks for :)

+3  A: 

End of that subtree. Nothing more than a fancy bit of ascii art - think as if its +-

Ran Biron
I don't think this was the actual question ;-)
Bozhidar Batsov
Yuck :) So is there any shortcut for upgrading all spring related artifacts to a version? I dont want to list all the 10 spring deps and point it to a version.
Calm Storm
+1  A: 

It's simply a representation of a folder tree with ascii characters.

Andrea Polci
+2  A: 

There are two solutions:

  1. The OSS way: Download the projects you depend on, migrate them to the latest version of Spring and send them a patch so everyone gets the new features

  2. Overwrite the version of every dependency in your own POM.

Aaron Digulla
+2  A: 

Have you looked at the dependecyManagement tag? It allows you to specify the version number of each dependency a parent pom. All your other poms can then inherit the specified versions:

<properties>
    <spring.version>2.5.6</spring.version>
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- more dependencies -->

    </dependencies>
</dependencyManagement>

More information is available at the Introduction to the Dependency Mechanism.

matsev