복붙노트

[HADOOP] Maven - 테스트의 다른 종속성 버전

HADOOP

Maven - 테스트의 다른 종속성 버전

나는 Maven 2와 비슷한 문제를 겪고있다 - 테스트와 컴파일의 종속성 버전이 다르지만 지정된 대답이 작동하지 않는다.

내 프로젝트에서 나는 JUnit 테스트를위한 Cloudera 배포판과 Hadoop의 'vanilla'버전을 필요로합니다. 이전 버전은 * nix에서만 작동합니다.

내 응용 프로그램을 실행하려고하면 스레드 "main"java.lang.NoClassDefFoundError : org / apache / hadoop / conf / Configuration에서 예외가 발생합니다. Maven 또는 Eclipse에서 JUnit 테스트를 실행하면 모든 것이 잘 동작합니다. 테스트 종속성을 주석 처리하면 응용 프로그램이 성공적으로 실행됩니다.

테스트 의존성이 주석 처리되지 않은 경우 컴파일 종속성이 무시되는 이유는 무엇입니까?

    <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는 컴파일 된 범위 버전을 전혀 표시하지 않는 다음을 보여줍니다.

[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

해결법

  1. ==============================

    1.Maven 버그처럼 보입니다. 그렇지 않다면, 필자는 필자가 문서가 있으면 그것을 신뢰하지 않을 것입니다.

    Maven 버그처럼 보입니다. 그렇지 않다면, 필자는 필자가 문서가 있으면 그것을 신뢰하지 않을 것입니다.

    귀하의 경우, 나는 아마 :

  2. ==============================

    2.원하는 것은 Maven 3에서 더 이상 유효하지 않습니다 (이것은 Maven 2에서 유효합니다). Maven 3은 가장 가까운 종속성을 얻으려고 시도하며, 컴파일 또는 테스트 범위 의존성 중 하나만 컴파일 및 테스트 단계에 사용되도록합니다.

    원하는 것은 Maven 3에서 더 이상 유효하지 않습니다 (이것은 Maven 2에서 유효합니다). Maven 3은 가장 가까운 종속성을 얻으려고 시도하며, 컴파일 또는 테스트 범위 의존성 중 하나만 컴파일 및 테스트 단계에 사용되도록합니다.

    귀하의 경우 org.apache.hadoop : hadoop-core : 1.0.0 : 테스트는 org.apache.hadoop : hadoop-core : 0.20.2-cdh3u2 : overrides를 따르므로 가장 가까운 종속물이됩니다. mvn dependency : list goal을 실행할 때 Maven에서 다음과 같은 경고가 표시 될 수 있습니다.이 목표는 프로젝트 모델의 문제를 암시합니다.

    이를 '수정'하려면 프로젝트 모델이 별도의 테스트 종속성 집합을 정의 할 수있는 별도의 프로젝트로 테스트를 분할하는 것이 좋습니다.

  3. from https://stackoverflow.com/questions/9364511/maven-different-dependency-version-in-test by cc-by-sa and MIT license