UFO ET IT

여러 작업을 실행하는 Gradle 사용자 지정 작업

ufoet 2020. 11. 19. 22:22
반응형

여러 작업을 실행하는 Gradle 사용자 지정 작업


여러 gradle 작업을 하나로 실행하고 싶습니다. 그래서 대신

./gradlew clean build publish

사용자 지정 작업을 갖고 싶습니다.

./gradlew cleanBuildPublish

실행하도록 clean build하고 publish주문한다.

어떻게 가능합니까?

이것은 작동하지 않습니다

task cleanBuildPublish {
    dependsOn 'clean'
    dependsOn 'build'
    dependsOn 'publish'
}

미리 정의 된 순서로 일부 작업을 실행해야하는 경우 다음 코드와 같이을 dependsOn설정하는 것뿐만 mustRunAfter아니라이 작업에 대한 속성 설정해야 합니다.

task cleanBuildPublish {
    dependsOn 'clean'
    dependsOn 'build'
    dependsOn 'publish'
    tasks.findByName('build').mustRunAfter 'clean'
    tasks.findByName('publish').mustRunAfter 'build'
}

dependsOn작업 실행 순서를 정의하지 않고 하나의 작업이 다른 작업에 종속되도록 만들뿐 아니라 mustRunAfter수행합니다.


다음과 같은 작업 기반 클래스를 사용할 수도 있습니다. GradleBuild

여기에서 어떻게 할 수 있습니까? GradleBuild

task cleanBuildPublish(type: GradleBuild) {
     tasks = ['clean', 'build', 'publish']
}

cleanBuildPublish가 다른 작업에 의존하도록 아래 방법을 시도하십시오.

build.gradle

task clean{
    println "lets clean"
}

task build {
    println "lets build"
}

task publish {
    println "lets publish"
}

task cleanBuildPublish{
    println 'lets do all'
}


cleanBuildPublish.dependsOn clean
cleanBuildPublish.dependsOn build
cleanBuildPublish.dependsOn publish

산출

$ gradle cleanBuildPublish
lets clean
lets build
lets publish
lets do all
:build UP-TO-DATE
:clean UP-TO-DATE
:publish UP-TO-DATE
:cleanBuildPublish UP-TO-DATE

BUILD SUCCESSFUL

Total time: 2.738 secs

자세한 내용은 https://docs.gradle.org/current/userguide/more_about_tasks.html#addDependencyUsingTask확인 하세요.


If publish task is in a sub project named subProjectName,

...
tasks.findByPath(':subProjectName:publish').mustRunAfter 'build'
...

My approach is

task cleanBuildPublish (type: GradleBuild, dependsOn: ['clean', 'build', 'publish']) { 
}

This works for me.


Try adding defaultTasks in build.gradle. For eg. defaultTasks 'clean', 'build', 'publish'

참고URL : https://stackoverflow.com/questions/32907275/gradle-custom-task-which-runs-multiple-tasks

반응형