You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Daniel Jones <da...@mendeley.com> on 2012/02/21 10:44:08 UTC

Maven 3.0.3 Not Allowing Different Versions for Compile/Test

Hi all,

Apologies in advance if this isn't the right list to post to.

Using Maven 3.0.3 and Dependency plug-in 2.4, I've encountered a
strange issue whereby if I specify different versions of a dependency,
one in compile scope and one in test, only one of them gets 'noticed'.
I've detailed the problem on Stack Overflow
(http://stackoverflow.com/questions/9364511/maven-different-dependency-version-in-test),
but I'll repeat the explanation here.

In my project I need to depend on a Cloudera distribution of Hadoop
and a 'vanilla' version for JUnit testing, as the former only works on
*nix.

When I try and execute my application, I get Exception in thread
"main" java.lang.NoClassDefFoundError:
org/apache/hadoop/conf/Configuration. When I run JUnit tests from
Maven or Eclipse, everything works fine. If I comment out the test
dependencies, the application runs successfully, but then the tests
fail because they're using the wrong version.

Why is the compile dependency getting ignored when the test dependency
is uncommented?

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>0.20.2-cdh3u2</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.0.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-test</artifactId>
        <version>1.0.0</version>
        <scope>test</scope>
    </dependency>

mvn dependency:list shows the following, which does not show the
compile scoped version at all:

[INFO] The following files have been resolved:
[INFO]    ant:ant:jar:1.6.5:test
[INFO]    aopalliance:aopalliance:jar:1.0:compile
[INFO]    asm:asm:jar:3.3.1:compile
[INFO]    cglib:cglib:jar:2.2.2:compile
[INFO]    ch.qos.logback:logback-classic:jar:1.0.0:compile
[INFO]    ch.qos.logback:logback-core:jar:1.0.0:compile
[INFO]    com.google.guava:guava:jar:r08:compile
[INFO]    com.h2database:h2:jar:1.3.164:test
[INFO]    com.jolbox:bonecp:jar:0.7.1.RELEASE:compile
[INFO]    com.sun.jersey:jersey-core:jar:1.11:test
[INFO]    commons-beanutils:commons-beanutils:jar:1.7.0:test
[INFO]    commons-beanutils:commons-beanutils-core:jar:1.8.0:test
[INFO]    commons-cli:commons-cli:jar:1.2:test
[INFO]    commons-codec:commons-codec:jar:1.4:test
[INFO]    commons-collections:commons-collections:jar:3.2.1:test
[INFO]    commons-configuration:commons-configuration:jar:1.6:test
[INFO]    commons-digester:commons-digester:jar:1.8:test
[INFO]    commons-el:commons-el:jar:1.0:test
[INFO]    commons-httpclient:commons-httpclient:jar:3.0.1:test
[INFO]    commons-lang:commons-lang:jar:2.4:test
[INFO]    commons-logging:commons-logging:jar:1.1.1:compile
[INFO]    commons-net:commons-net:jar:1.4.1:test
[INFO]    hsqldb:hsqldb:jar:1.8.0.10:test
[INFO]    junit:junit:jar:4.10:test
[INFO]    mysql:mysql-connector-java:jar:5.1.18:compile
[INFO]    net.java.dev.jets3t:jets3t:jar:0.7.1:test
[INFO]    net.sf.kosmosfs:kfs:jar:0.3:test
[INFO]    org.apache.commons:commons-math:jar:2.1:test
[INFO]    org.apache.ftpserver:ftplet-api:jar:1.0.0:test
[INFO]    org.apache.ftpserver:ftpserver-core:jar:1.0.0:test
[INFO]    org.apache.ftpserver:ftpserver-deprecated:jar:1.0.0-M2:test
[INFO]    org.apache.hadoop:hadoop-core:jar:1.0.0:test
[INFO]    org.apache.hadoop:hadoop-test:jar:1.0.0:test
[INFO]    org.apache.mina:mina-core:jar:2.0.0-M5:test
[INFO]    org.codehaus.jackson:jackson-core-asl:jar:1.0.1:test
[INFO]    org.codehaus.jackson:jackson-mapper-asl:jar:1.0.1:test
[INFO]    org.eclipse.jdt:core:jar:3.1.1:test
[INFO]    org.hamcrest:hamcrest-core:jar:1.1:test
[INFO]    org.liquibase:liquibase-core:jar:2.0.3:test
[INFO]    org.liquibase.ext:liquibase-slf4j:jar:0.0.1:test
[INFO]    org.mortbay.jetty:jetty:jar:6.1.26:test
[INFO]    org.mortbay.jetty:jetty-util:jar:6.1.26:test
[INFO]    org.mortbay.jetty:jsp-2.1:jar:6.1.14:test
[INFO]    org.mortbay.jetty:jsp-api-2.1:jar:6.1.14:test
[INFO]    org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
[INFO]    org.mortbay.jetty:servlet-api-2.5:jar:6.1.14:test
[INFO]    org.slf4j:jcl-over-slf4j:jar:1.6.4:compile
[INFO]    org.slf4j:log4j-over-slf4j:jar:1.6.4:compile
[INFO]    org.slf4j:slf4j-api:jar:1.6.4:compile
[INFO]    org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-context:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-context-support:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-core:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-jdbc:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework:spring-test:jar:3.1.1.RELEASE:test
[INFO]    org.springframework:spring-tx:jar:3.1.1.RELEASE:compile
[INFO]    org.springframework.data:spring-data-hadoop:jar:1.0.0.BUILD-SNAPSHOT:c
ompile
[INFO]    oro:oro:jar:2.0.8:test
[INFO]    tomcat:jasper-compiler:jar:5.5.12:test
[INFO]    tomcat:jasper-runtime:jar:5.5.12:test
[INFO]    xmlenc:xmlenc:jar:0.52:test

I've worked around the issue for now by using profile properties, but
I thought it would be worth mentioning this on the Maven list in case
it turns out to be a bug.

--
Regards,
Daniel Jones | Software Engineer, Platform Team


Mendeley Ltd | London, UK | www.mendeley.com
Registered in England and Wales | Company Number 6419015

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Maven 3.0.3 Not Allowing Different Versions for Compile/Test

Posted by Jörg Schaible <Jo...@scalaris.com>.
Hi Daniel,

Daniel Jones wrote:

> Hi all,
> 
> Apologies in advance if this isn't the right list to post to.
> 
> Using Maven 3.0.3 and Dependency plug-in 2.4, I've encountered a
> strange issue whereby if I specify different versions of a dependency,
> one in compile scope and one in test, only one of them gets 'noticed'.
> I've detailed the problem on Stack Overflow
> (http://stackoverflow.com/questions/9364511/maven-different-dependency-
version-in-test),
> but I'll repeat the explanation here.
> 
> In my project I need to depend on a Cloudera distribution of Hadoop
> and a 'vanilla' version for JUnit testing, as the former only works on
> *nix.
> 
> When I try and execute my application, I get Exception in thread
> "main" java.lang.NoClassDefFoundError:
> org/apache/hadoop/conf/Configuration. When I run JUnit tests from
> Maven or Eclipse, everything works fine. If I comment out the test
> dependencies, the application runs successfully, but then the tests
> fail because they're using the wrong version.
> 
> Why is the compile dependency getting ignored when the test dependency
> is uncommented?
> 
>     <dependency>
>         <groupId>org.apache.hadoop</groupId>
>         <artifactId>hadoop-core</artifactId>
>         <version>0.20.2-cdh3u2</version>
>         <scope>compile</scope>
>     </dependency>
> 
>     <dependency>
>         <groupId>org.apache.hadoop</groupId>
>         <artifactId>hadoop-core</artifactId>
>         <version>1.0.0</version>
>         <scope>test</scope>
>     </dependency>
> 
>     <dependency>
>         <groupId>org.apache.hadoop</groupId>
>         <artifactId>hadoop-test</artifactId>
>         <version>1.0.0</version>
>         <scope>test</scope>
>     </dependency>
> 
> mvn dependency:list shows the following, which does not show the
> compile scoped version at all:
> 
> [INFO] The following files have been resolved:
> [INFO]    ant:ant:jar:1.6.5:test
> [INFO]    aopalliance:aopalliance:jar:1.0:compile
> [INFO]    asm:asm:jar:3.3.1:compile
> [INFO]    cglib:cglib:jar:2.2.2:compile
> [INFO]    ch.qos.logback:logback-classic:jar:1.0.0:compile
> [INFO]    ch.qos.logback:logback-core:jar:1.0.0:compile
> [INFO]    com.google.guava:guava:jar:r08:compile
> [INFO]    com.h2database:h2:jar:1.3.164:test
> [INFO]    com.jolbox:bonecp:jar:0.7.1.RELEASE:compile
> [INFO]    com.sun.jersey:jersey-core:jar:1.11:test
> [INFO]    commons-beanutils:commons-beanutils:jar:1.7.0:test
> [INFO]    commons-beanutils:commons-beanutils-core:jar:1.8.0:test
> [INFO]    commons-cli:commons-cli:jar:1.2:test
> [INFO]    commons-codec:commons-codec:jar:1.4:test
> [INFO]    commons-collections:commons-collections:jar:3.2.1:test
> [INFO]    commons-configuration:commons-configuration:jar:1.6:test
> [INFO]    commons-digester:commons-digester:jar:1.8:test
> [INFO]    commons-el:commons-el:jar:1.0:test
> [INFO]    commons-httpclient:commons-httpclient:jar:3.0.1:test
> [INFO]    commons-lang:commons-lang:jar:2.4:test
> [INFO]    commons-logging:commons-logging:jar:1.1.1:compile
> [INFO]    commons-net:commons-net:jar:1.4.1:test
> [INFO]    hsqldb:hsqldb:jar:1.8.0.10:test
> [INFO]    junit:junit:jar:4.10:test
> [INFO]    mysql:mysql-connector-java:jar:5.1.18:compile
> [INFO]    net.java.dev.jets3t:jets3t:jar:0.7.1:test
> [INFO]    net.sf.kosmosfs:kfs:jar:0.3:test
> [INFO]    org.apache.commons:commons-math:jar:2.1:test
> [INFO]    org.apache.ftpserver:ftplet-api:jar:1.0.0:test
> [INFO]    org.apache.ftpserver:ftpserver-core:jar:1.0.0:test
> [INFO]    org.apache.ftpserver:ftpserver-deprecated:jar:1.0.0-M2:test
> [INFO]    org.apache.hadoop:hadoop-core:jar:1.0.0:test
> [INFO]    org.apache.hadoop:hadoop-test:jar:1.0.0:test
> [INFO]    org.apache.mina:mina-core:jar:2.0.0-M5:test
> [INFO]    org.codehaus.jackson:jackson-core-asl:jar:1.0.1:test
> [INFO]    org.codehaus.jackson:jackson-mapper-asl:jar:1.0.1:test
> [INFO]    org.eclipse.jdt:core:jar:3.1.1:test
> [INFO]    org.hamcrest:hamcrest-core:jar:1.1:test
> [INFO]    org.liquibase:liquibase-core:jar:2.0.3:test
> [INFO]    org.liquibase.ext:liquibase-slf4j:jar:0.0.1:test
> [INFO]    org.mortbay.jetty:jetty:jar:6.1.26:test
> [INFO]    org.mortbay.jetty:jetty-util:jar:6.1.26:test
> [INFO]    org.mortbay.jetty:jsp-2.1:jar:6.1.14:test
> [INFO]    org.mortbay.jetty:jsp-api-2.1:jar:6.1.14:test
> [INFO]    org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
> [INFO]    org.mortbay.jetty:servlet-api-2.5:jar:6.1.14:test
> [INFO]    org.slf4j:jcl-over-slf4j:jar:1.6.4:compile
> [INFO]    org.slf4j:log4j-over-slf4j:jar:1.6.4:compile
> [INFO]    org.slf4j:slf4j-api:jar:1.6.4:compile
> [INFO]    org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-context:jar:3.1.1.RELEASE:compile
> [INFO]   
> [org.springframework:spring-context-support:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-core:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-jdbc:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-test:jar:3.1.1.RELEASE:test
> [INFO]    org.springframework:spring-tx:jar:3.1.1.RELEASE:compile
> [INFO]   
> [org.springframework.data:spring-data-hadoop:jar:1.0.0.BUILD-SNAPSHOT:c
> ompile
> [INFO]    oro:oro:jar:2.0.8:test
> [INFO]    tomcat:jasper-compiler:jar:5.5.12:test
> [INFO]    tomcat:jasper-runtime:jar:5.5.12:test
> [INFO]    xmlenc:xmlenc:jar:0.52:test
> 
> I've worked around the issue for now by using profile properties, but
> I thought it would be worth mentioning this on the Maven list in case
> it turns out to be a bug.

No, it is by design. Maven will always resolve the same dependency (in term 
of groupId:artifactId) to the "nearest" version.

Regards,
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Maven 3.0.3 Not Allowing Different Versions for Compile/Test

Posted by Stephen Connolly <st...@gmail.com>.
put the tests in a separate module and that way the module can have
the alternative dependency

On 21 February 2012 09:44, Daniel Jones <da...@mendeley.com> wrote:
> Hi all,
>
> Apologies in advance if this isn't the right list to post to.
>
> Using Maven 3.0.3 and Dependency plug-in 2.4, I've encountered a
> strange issue whereby if I specify different versions of a dependency,
> one in compile scope and one in test, only one of them gets 'noticed'.
> I've detailed the problem on Stack Overflow
> (http://stackoverflow.com/questions/9364511/maven-different-dependency-version-in-test),
> but I'll repeat the explanation here.
>
> In my project I need to depend on a Cloudera distribution of Hadoop
> and a 'vanilla' version for JUnit testing, as the former only works on
> *nix.
>
> When I try and execute my application, I get Exception in thread
> "main" java.lang.NoClassDefFoundError:
> org/apache/hadoop/conf/Configuration. When I run JUnit tests from
> Maven or Eclipse, everything works fine. If I comment out the test
> dependencies, the application runs successfully, but then the tests
> fail because they're using the wrong version.
>
> Why is the compile dependency getting ignored when the test dependency
> is uncommented?
>
>    <dependency>
>        <groupId>org.apache.hadoop</groupId>
>        <artifactId>hadoop-core</artifactId>
>        <version>0.20.2-cdh3u2</version>
>        <scope>compile</scope>
>    </dependency>
>
>    <dependency>
>        <groupId>org.apache.hadoop</groupId>
>        <artifactId>hadoop-core</artifactId>
>        <version>1.0.0</version>
>        <scope>test</scope>
>    </dependency>
>
>    <dependency>
>        <groupId>org.apache.hadoop</groupId>
>        <artifactId>hadoop-test</artifactId>
>        <version>1.0.0</version>
>        <scope>test</scope>
>    </dependency>
>
> mvn dependency:list shows the following, which does not show the
> compile scoped version at all:
>
> [INFO] The following files have been resolved:
> [INFO]    ant:ant:jar:1.6.5:test
> [INFO]    aopalliance:aopalliance:jar:1.0:compile
> [INFO]    asm:asm:jar:3.3.1:compile
> [INFO]    cglib:cglib:jar:2.2.2:compile
> [INFO]    ch.qos.logback:logback-classic:jar:1.0.0:compile
> [INFO]    ch.qos.logback:logback-core:jar:1.0.0:compile
> [INFO]    com.google.guava:guava:jar:r08:compile
> [INFO]    com.h2database:h2:jar:1.3.164:test
> [INFO]    com.jolbox:bonecp:jar:0.7.1.RELEASE:compile
> [INFO]    com.sun.jersey:jersey-core:jar:1.11:test
> [INFO]    commons-beanutils:commons-beanutils:jar:1.7.0:test
> [INFO]    commons-beanutils:commons-beanutils-core:jar:1.8.0:test
> [INFO]    commons-cli:commons-cli:jar:1.2:test
> [INFO]    commons-codec:commons-codec:jar:1.4:test
> [INFO]    commons-collections:commons-collections:jar:3.2.1:test
> [INFO]    commons-configuration:commons-configuration:jar:1.6:test
> [INFO]    commons-digester:commons-digester:jar:1.8:test
> [INFO]    commons-el:commons-el:jar:1.0:test
> [INFO]    commons-httpclient:commons-httpclient:jar:3.0.1:test
> [INFO]    commons-lang:commons-lang:jar:2.4:test
> [INFO]    commons-logging:commons-logging:jar:1.1.1:compile
> [INFO]    commons-net:commons-net:jar:1.4.1:test
> [INFO]    hsqldb:hsqldb:jar:1.8.0.10:test
> [INFO]    junit:junit:jar:4.10:test
> [INFO]    mysql:mysql-connector-java:jar:5.1.18:compile
> [INFO]    net.java.dev.jets3t:jets3t:jar:0.7.1:test
> [INFO]    net.sf.kosmosfs:kfs:jar:0.3:test
> [INFO]    org.apache.commons:commons-math:jar:2.1:test
> [INFO]    org.apache.ftpserver:ftplet-api:jar:1.0.0:test
> [INFO]    org.apache.ftpserver:ftpserver-core:jar:1.0.0:test
> [INFO]    org.apache.ftpserver:ftpserver-deprecated:jar:1.0.0-M2:test
> [INFO]    org.apache.hadoop:hadoop-core:jar:1.0.0:test
> [INFO]    org.apache.hadoop:hadoop-test:jar:1.0.0:test
> [INFO]    org.apache.mina:mina-core:jar:2.0.0-M5:test
> [INFO]    org.codehaus.jackson:jackson-core-asl:jar:1.0.1:test
> [INFO]    org.codehaus.jackson:jackson-mapper-asl:jar:1.0.1:test
> [INFO]    org.eclipse.jdt:core:jar:3.1.1:test
> [INFO]    org.hamcrest:hamcrest-core:jar:1.1:test
> [INFO]    org.liquibase:liquibase-core:jar:2.0.3:test
> [INFO]    org.liquibase.ext:liquibase-slf4j:jar:0.0.1:test
> [INFO]    org.mortbay.jetty:jetty:jar:6.1.26:test
> [INFO]    org.mortbay.jetty:jetty-util:jar:6.1.26:test
> [INFO]    org.mortbay.jetty:jsp-2.1:jar:6.1.14:test
> [INFO]    org.mortbay.jetty:jsp-api-2.1:jar:6.1.14:test
> [INFO]    org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
> [INFO]    org.mortbay.jetty:servlet-api-2.5:jar:6.1.14:test
> [INFO]    org.slf4j:jcl-over-slf4j:jar:1.6.4:compile
> [INFO]    org.slf4j:log4j-over-slf4j:jar:1.6.4:compile
> [INFO]    org.slf4j:slf4j-api:jar:1.6.4:compile
> [INFO]    org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-context:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-context-support:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-core:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-jdbc:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework:spring-test:jar:3.1.1.RELEASE:test
> [INFO]    org.springframework:spring-tx:jar:3.1.1.RELEASE:compile
> [INFO]    org.springframework.data:spring-data-hadoop:jar:1.0.0.BUILD-SNAPSHOT:c
> ompile
> [INFO]    oro:oro:jar:2.0.8:test
> [INFO]    tomcat:jasper-compiler:jar:5.5.12:test
> [INFO]    tomcat:jasper-runtime:jar:5.5.12:test
> [INFO]    xmlenc:xmlenc:jar:0.52:test
>
> I've worked around the issue for now by using profile properties, but
> I thought it would be worth mentioning this on the Maven list in case
> it turns out to be a bug.
>
> --
> Regards,
> Daniel Jones | Software Engineer, Platform Team
>
>
> Mendeley Ltd | London, UK | www.mendeley.com
> Registered in England and Wales | Company Number 6419015
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org