문제

내 작업을 작성하려고 시도하고, 멀티 프로젝트 빌드 중에 생성 된 모든 아티팩트의 패키지를 생성합니다.

현재 내가하는 일은 이제

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 사용자 정의 작업에 대한 장의 }

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top