首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven -测试中的不同依赖项版本

Maven -测试中的不同依赖项版本
EN

Stack Overflow用户
提问于 2012-02-21 00:22:30
回答 2查看 4.5K关注 0票数 1

我遇到了一个类似于Maven 2 - different dependency versions in test and compile的问题,但指定的答案不起作用。

在我的项目中,我需要依赖Hadoop的Cloudera发行版和一个“香草”版本来进行JUnit测试,因为前者只能在*nix上工作。

当我尝试执行我的应用程序时,我得到了Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration。当我在Maven或Eclipse中运行JUnit测试时,一切工作正常。如果我注释掉test依赖项,应用程序将成功运行。

compile依赖项未被注释时,为什么test依赖项被忽略?

代码语言:javascript
复制
    <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显示了以下内容,根本不显示compile作用域版本:

代码语言:javascript
复制
[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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-21 01:57:31

看起来像是maven bug -或者如果不是,一些可疑的东西,如果有的话,我不会相信文档。

在你的情况下,我可能会:

  1. 升级maven并查看最新的m3
  2. 中是否修复了该问题,请尝试使用另一个工件id或组名重新打包其中一个hadoop版本。maven-shade-plugin,不用费心更改包的名称,只需引入一些maven不知道的东西就可以了,这与org.apache.hadoop:hadoop-core
  3. try将测试转移到一个单独的项目downstream
  4. start调试maven并了解到底发生了什么没有什么不同(然后回到1或2...)
票数 1
EN

Stack Overflow用户

发布于 2013-12-03 19:24:37

您想要的,在Maven3中不再有效(这曾经在Maven2中有效)。Maven 3将尝试获得最近的依赖项,从而有效地确保编译和测试阶段只使用编译或测试范围依赖项中的一个。

在本例中,org.apache.hadoop:hadoop-core:1.0.0:test覆盖了org.apache.hadoop:hadoop-core:0.20.2-cdh3u2:compile,因此成为最近的依赖项。在运行mvn dependency:list目标时,您可能会看到Maven显示以下警告,暗示这是您的项目模型中的一个问题:

核心警告'dependencies.dependency.(groupId:artifactId:type:classifier)‘必须是唯一的:org.apache.hadoop:hadoop-

:jar ->版本0.20.2-cdh3u2vs 1.0.0 @ line xyz,列xyz

要“修复”这个问题,最好将测试拆分到一个单独的项目中,该项目的项目模型可以定义一组单独的测试依赖项。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9364511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档