2015-02-02 3 views
5


Google Gradle 프로젝트에서 다른 하위 프로젝트의 종속성에 액세스 할 수 있어야하지만 전체 작업의 일부로 실행되지 않아야하는 기능 테스트 용 새 모듈을 추가하려고합니다 프로젝트 빌드. 나는이를하려고하면, 그것은 여전히 ​​내장됩니다 :Gradle 전체 빌드에서 특정 하위 프로젝트를 제외합니다.

def javaProjects() { 
    return subprojects.findAll { it.name != 'functional-tests' } 
} 

configure(javaProjects()) { 
    ... 
} 

project(':functional-tests') { 
    .... 
} 

결과는 내가 기능 - 테스트 자체의 별도의 build.gradle 파일을 만들 이동하는 경우에도 동일합니다. 누군가가 이것을 달성 할 수있는 방법을 지적 할 수 있습니까? settings.gradle에서을 포함하고로 또는 이 후 프로젝트를 제외 비활성화에

답변

11

기능 테스트가 명령 줄이나 빌드 파일을 통해 실행되지 않도록하는 것이 더 좋은 해결책을 찾았습니다. 프로젝트를 빌드 할 때

$ gradle check -x :functional-tests:check 

그런 다음, 당신은 하위 프로젝트 빌드를 할 수 있지만, 실행에서 자신의 시험을 제외 할 수 있습니다 : 예를 들어

는, 실행 기능 테스트를 제외한 모든 테스트를 실행합니다.

$ gradle clean assemble -x :functional-tests:check 

더 나은 옵션은 속성이 설정되어 있지 않으면 빌드 파일의 기능 테스트를 비활성화 할 수 있습니다. 예를 들어, build.gradle 추가 줄에 :

project('functional-tests') { 
    test { 
     onlyIf { 
      project.hasProperty("functionalTests") 
     } 
    } 
} 

이 방법을 사용하면 특정 빌드 속성을 지정하지 않는 한 항상 건너 뜁니다 기능 테스트 :

$ gradle check 
$ gradle -PfunctionalTests check 

희망하는 데 도움이!

4

은 내가 아는 한 그것은 불가능합니다. 따라서 그것은 어쩌면 settings.gradle에 다음과 같은 방식으로 수행 :

include 'p1', 'p2', 'p3' 

if (any_condition_here) { 
    include 'functional-tests' 
} 

그것은 build.gradle에서 추가 검사가 필요합니다 -이 포함 않다면 프로젝트를 구성 할 수 있습니다.

내 머리에 오는 것은 -a 명령 줄 스위치입니다 (here 참조). 어쩌면 도움이 될지도 모릅니다.

+0

안녕하세요, 제 생각에는 첫 번째 옵션으로 내 필요를 충족시켜야합니다. 그러나 CI의 Gradle 빌드는 항상 -a 옵션없이 전체 빌드를 실행합니다. 그래서 나는 그런 경우에 옵션이 작동하지 않을 것이라고 생각합니다. – Paddy

+0

@Opal : build.gradle을 포함한 전체 예제를 제공 할 수 있습니까? – Nayan

+0

@Rafiqunnabi, 문제를 설명해주십시오. – Opal

2

당신은 하위 프로젝트를 제외 할 수는 없지만 하위 프로젝트 작업을 해제 할 수 있습니다 :이처럼 그것을 할

gradle.taskGraph.whenReady { 
    gradle.taskGraph.allTasks.each { 
    if(it.project == project) { 
     it.onlyIf { false } 
    } 
    } 
} 
2

:

이 방법에 의해
//for all sub projects 
subprojects { 
    if (it.name != 'project name') { 
     //do something 
    } 
} 

, 나는 몇 가지 특별한 프로젝트를 제외 할 수 있습니다 subprojects.

allprojects 또는 project에서도 사용할 수 있습니다.

관련 문제