2016-06-27 2 views
1

Apache Ant 프로젝트를 Gradle로 컴파일하기위한 작업을 진행하고 있으며 다른 하위 프로젝트 세트가 있습니다.다른 모듈의 디버그 클래스를 사용하여 Gradle 하위 프로젝트를 컴파일하는 방법

내 목표는 기본 프로젝트의 출력을 일부 하위 프로젝트의 종속성으로 사용하는 것입니다.

MainProject: 
-> src/main/java 
-> src/main/resources 
-> src/test/java 
-> src/test/resources 
-> src/mocks/java 

ChildProject1: 
-> src/main/java 
-> src/main/resources 
-> src/test/java 
-> src/test/resources 
-> src/mocks/java 

주요 프로젝트는 제대로 자식 빌드 경로에 포함되어 있으며이 링크를 이클립스에 관해서 모든 링크가 올바르게 발견 : 글로벌 구성은 다음과 같다.

나는 메인 ChildProject에 대한 settings.gradle 파일에서 프로젝트 빌드에서 종속성 포함했다

:

dependencies { 
    compile project(':MainProject') 
} 

이 보인다 내 문제가 ChildProject 컴파일하기 위해 모의 객체/자바에서 출력을 필요로하고 있지만를 Gradle 컴파일 프로세스에 main/java 파일 인 "default"출력이 포함되어있는 경우, mocks의 "symbols"을 찾을 수 없다는 오류 메시지가 나타납니다.

나는 그것을 추가하여 해결되었다, 사용되는 모의 객체를 필요로하는 MainProject 테스트 자바 파일을 컴파일와 비슷한 문제가 있었다 :

sourceSets { 
    mocks { 
     java { 
      srcDir 'src/mocks/java' 
     } 
     compileClasspath += sourceSets.main.runtimeClasspath 
    } 
    test { 
     compileClasspath += sourceSets.mocks.output 
     runtimeClasspath += sourceSets.mocks.output 
    } 
} 

모의 소스가 제대로 테스트 클래스 패스에 추가됩니다.

ChilProjectMainProject의 출력물을 사용하여 테스트를 컴파일하는 방법은 무엇입니까?

답변

0

올바른 방향으로 알려 드리겠습니다. 일반적으로 당신과 같이 Gradle을 멀티 프로젝트 종속성을 선언

dependencies { 
    compile project(':projA') 
} 

이 암시 적 정의는 종속성으로 projAdefault 아티팩트를 사용했다.

당신이 원하는 것은 mock의 종속물 인 projA의 이슈를 사용하는 것입니다. 이 작업을 수행하는 방법은 다음과 같습니다

  1. mainmock sourceSet에서 컴파일 된 클래스 파일을 결합하는 새로운 jar 작업을 만듭니다.

    task mocksJar(type: Jar) { 
        classifier 'mocks' 
        group 'build' 
        from sourceSets.main.output 
        from sourceSets.mocks.output 
    } 
    
  2. 수출 mocks라는 새로운 Gradle을 구성을 생성하고 이슈를 할당하여 mock 유물 projA에서 빌드 내보낼 :

    configuration { mocks } 
    artifacts.mocks mocksJar 
    
  3. 가져 오기를 사용하여 projA을 필요로 프로젝트의 mocks 구성을 확장 된 종속성 구문 :

    dependencies { 
        compile project(path:':projA', configuration:'mocks') 
    } 
    
+0

답장을 보내 주셔서 감사합니다. 현재 제안 사항부터 문제를 해결하고 있습니다. 그러나 주 프로젝트에서 이슈를 어떻게 선언해야할지 모르겠다. 예를 들어 구성 블록을 이해하는 것으로부터 "구성 {mocks}"라인을 얻지 못한다. 다른 소스 세트 컴파일 프로세스를 정의하기 위해 여기에있다. Gradle에서 유물을 사용한 적이 없으며 Gradle 공식 문서가 명확하지 않음을 확인했습니다. 다음 답변을 기다리고 있습니다. –

+0

이중 게시에 대해 죄송합니다. 설정에 "mocks"를 추가했으나 이 일이 무엇인지 잘 모르겠다.) 편집이 순조롭게 진행되었지만 예문에 나오는 이슈/항아리 선언이 어디에 있어야 하는지를 정확히 알 수는 없습니까? –

+0

1. 섹션을 배치 할 수 있습니다 'jarMocks'는'mocks' 소스 셋에 정의 된 모의 소스 코드로 JAR을 빌드하는 태스크 여야합니다. mcoks JA R에 기본 클래스 파일이 누락되었습니다. 2. 섹션 응답을 업데이트했습니다. – cmcginty

관련 문제