멀티 프로젝트 빌드로 빌드가 끝날 때 그라데이션
-
21-12-2019 - |
문제
내 작업을 작성하려고 시도하고, 멀티 프로젝트 빌드 중에 생성 된 모든 아티팩트의 패키지를 생성합니다.
현재 내가하는 일은 이제
gradle build createPackage
.
다음과 같은 출력을 제공합니다 :
:test-utility:compileJava UP-TO-DATE
:test-utility:processResources UP-TO-DATE
...
:test-utility:check UP-TO-DATE
:test-utility:build UP-TO-DATE
Creating Package...
Created.
BUILD SUCCESSFUL
Total time: 4.654 secs
.
createPackage
태스크가있는 것 :
task createPackage {
println "Creating Package..."
println "Created."
}
.
그러나 단순히 하나의 명령을 실행하여이를 수행하는 것이 좋으며 주문을 유지하는 것이 가장 좋은 방법은 무엇입니까?
이상적으로 build
태스크에서 createPackage
를 호출하거나 내 작업으로 build
태스크에 추가하고 싶습니다.
해결책
OK 라인 사이의 읽기
를 삭제할 몇 가지 사항이 있습니다.1) Println은 실행 단계가 아닌 구성 단계에서 실행 중입니다. "Nofollow"> http://www.gradle.org/docs/current/userguide/build_lifecycle을 참조하십시오.HTML 자세한 정보를 보려면
2) 단일 '빌드'작업이 없습니다.명령 줄의 gradle build
는 각 서브 프로젝트의 '빌드'작업을 실행합니다.귀하의 패키지 작업은 모든 것에 의존해야합니다.
apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
dependsOn subprojects*.build
}
.
3) 그라데이션을 통해 더 선언적 일 수 있습니다 - 패키지를 포장하고자하는 것을 알려주고 실행 해야하는 것을 알아낼 것입니다.예를 들어, 서브 프로젝트에서 모든 항아리를 갱신하고 싶다고 말할 수 있습니다.
apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
from subprojects*.jar
}
. 다른 팁
몇 가지 방법이 있습니다.build
를 사용하여 createPackage
를 호출 할 수 있는지 확인하려면 gradle build
를 수정하는 것입니다.그런 다음 작업을 향상시키고 입력이 무엇인지 알려줍니다 (아마도 jar
와 같은 다른 작업의 출력이 아닐 수도 있습니다).Gradle은 빌드를 실행할 때 실행에 이러한 작업을 추가하고 각 작업의 최신 상태를 기반으로 다시 실행할 수 있습니다.이것은 userGuide - http://www.gradle.org/docs/current/userguide/more_abour_tasks.html#sec:up_to_date_checks 사용자 정의 작업에 대한 장의 }