2016-06-09 5 views
0

다른 모든 곳과 동일하게 구성되었습니다. 실제로 통합 테스트 구성을 위해 가져 오기를 사용합니다. --debug을 포함하여 종속성 트리를 살펴 보는 것을 포함하여 로컬 통합 테스트 작업 및 구성의 이름 바꾸기를 포함하여 생각할 수있는 모든 작업을 수행했습니다. 그러나 어떤 이유로 Gradle을은 재산 integrationTest이 간 프로젝트 종속성에 대한 sourceSet에 존재하지 않는 주장 :깨진 프로젝트 종속성에 대한 디버깅 정보가 필요합니다.

integrationTestCompile project(':components:things-components:abc-stuff').sourceSets.integrationTest.output 

을 ... 지금은이 구문 특히 좋아하지 그리고 난 이미 griped했습니다 프로젝트 간 테스트 종속성 및 테스트 유틸리티 구성 요소에 있어야하는 방법에 대한 폭풍우를 피할 수 없습니다. 그러나 IntelliJ가 받아 들일 수있는 것으로 보이기 때문에이 방법을 사용하고 있습니다. 이렇게 쓰면 문제가 생깁니다 :

integrationTestCompile project(path: ':components:things-components:abc-stuff', configuration: 'integrationTest') 

어떻게 알 수 있습니까? 왜 한 프로젝트에만이 문제가 발생하는지 알지 못합니다. 기록을 위해

는, 나는 또한 시도했다 :

integrationTestCompile project(path: ':components:things-components:abc-stuff', configuration: 'integrationTestCompile') 
+0

': components : things-components : abc-stuff'에서'integrationTest'에 jar 파일을 게시 했습니까? – Ethan

+0

아니요. 통합 테스트가 배포되지 않은 이유는 없습니다. 여분의 사이클을 소비하는 이유는 무엇입니까? 언급했듯이, 그것은 모든 곳에서 동일하게 구성됩니다. 우리 빌드에서는 아무 것도 JAR 테스트가 없습니다. 나는 일종의 Gradle 버그를 발견했다. 내게 특히 염려되는 점은 우리의 건축물이 거대하기 때문에 어떤 종류의 상한선을 지나칠 수도 있다는 것입니다. 엄청난 수의 의존성이있는 100 개 이상의 하위 프로젝트 – user447607

+0

... 두 번째 생각에 .... 정교 해주세요? 나는 지금이 각도를 시도하고있다. – user447607

답변

0

문제는 Gradle을 사용하면 다른 프로젝트에 소비 할 수있는 당신을 위해 단지를 만들기 위해 이야기하지 않은 것입니다.

integrationTestCompile project(':components:things-components:abc-stuff').sourceSets.integrationTest.output 

클래스 파일 및 종속성을 가져옵니다. 즉, 해당 표기법을 사용하는 이유입니다. configuration 표기법을 사용하려면 integrationTest에 jar 파일을 게시하려면 gradle에 알려야합니다. jar 파일은 저장소에 게시 할 필요는 없지만 내부 빌드에는 사용됩니다.

당신은 일을하여이 작업을 수행 할 수 있습니다 : 당신이 프로젝트의 로그에이 일을 끝낼 경우

configurations { 
    integrationTest 
} 

task integrationTestJar (type: Jar) { 
    baseName = "${project.name}-integ-test" 
    from sourceSets.integrationTest.output 
} 

artifacts { 
    integrationTest integrationTestJar 
} 

, 나는 당신을 위해이 작업을 수행 빠른 플러그인을 작성 추천 할 것입니다.

+0

다음 항아리가 지정되지 않은 다른 모든 곳에서 작동하는 이유는 무엇입니까? 나는 이미 이것을 시도했지만 두 번 확인해 보았다고 생각합니다. 앞서 언급했듯이 우리는 다음과 같은 블록을 가지고 있습니다 : "$ {rootProject.rootDir} /buildSrc/config/integrationTest.gradle" – user447607

+0

'sourceSets.integrationTest.output'을 할 때, 당신은 FileCollection에 의존해야합니다. 컴파일 된 클래스 파일을 포함합니다. 'integrationTest'에 이슈를 추가 할 때'integrationTest' 설정에 의존하면 jar와 의존성이 생깁니다. – Ethan

관련 문제