2017-12-28 55 views
0

TODO 태그를 확인하는 fix a gradle plugin을 시도 중입니다.gradle 플러그인 내에서 작업 종속성 정의

이 플러그인은 수표를 실행하는 데 사용할 수있는 새로운 작업()을 추가합니다. 이 작업은 자동으로 실행되지 않지만 build.gradle에 다음 줄을 추가하여 수행 할 수 있습니다. check.dependsOn checkTodo

이 플러그인을 사용하는 모든 build.gradle에서이 줄을 제거해야합니다. 플러그인 자체의 종속성. 이것이 가능한가?

것들 나는 시도했다 :

static void applyTasks(final Project project) { 
    TodoTask task = project.tasks.create("checkTodo", TodoTask) 

    project.task('check').dependsOn(task) 
    project.tasks().task('check').dependsOn(task) 
    project.tasks().check 
    project.getAllTasks(true).get('check').dependsOn(task) 
    project.getDefaultTasks().get('check').dependsOn(task) 
} 

project.task('check').dependsOn(task)을 제공합니다

이 플러그인을 적용하지 못했습니다 [클래스 'org.gradle.language.base.plugins.LifecycleBasePlugin']

표준 Gradle 라이프 사이클 플러그인을 사용할 때 맞춤 '확인'작업을 선언 할 수 없습니다. '

project.getAllTasks(true).get(project) 집합에는 "검사"작업이없고 다른 작업자는 "찾을 방법 없음"오류 만 제공합니다.

+0

문제점 또는 오류 메시지는 무엇입니까? –

+0

내 질문을 편집했습니다. – HoldYourWaffle

답변

0

문제는 특정 (또는 모든) check 작업이 플러그인을 적용 할 때 존재하지 않을 수 있다는 것입니다.

build.gradle의 사용자 코드를 통해 모든 작업을 만들려면 afterEvaluate 클로저를 사용하십시오. check이라는 작업이 전체 빌드에서 만들어지지 않으면이 방법은 여전히 ​​실패합니다. 특정 플러그인의 작업 생성 (예를 들어, 자바 플러그인)에 의존 할 경우

project.afterEvaluate { 
    project.tasks['check'].dependsOn task 
} 

, 프로젝트 플러그인 관리자의 withId 또는 withPlugin 방법을 사용합니다. 주어진 클로저는 특정 플러그인이 적용될 때 실행될 것입니다.

project.pluginManager.withPlugin('java') { 
    project.tasks['check'].dependsOn task 
}