我遇到了类似于Maven 2的问题- 测试和编译中的不同依赖版本但是指定的答案不起作用.
在我的项目中,我需要依赖于Hadoop的Cloudera发行版和JUnit测试的"vanilla"版本,因为前者仅适用于*nix.
当我尝试执行我的应用程序时,我得到了Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration.当我从Maven或Eclipse运行JUnit测试时,一切正常.如果我注释掉test依赖项,应用程序将成功运行.
为什么在取消注释依赖项compile时会忽略test依赖关系?
<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>
Run Code Online (Sandbox Code Playgroud)
mvn dependency:list显示以下内容,它根本不显示compile范围版本:
[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] …Run Code Online (Sandbox Code Playgroud)