Quiero ejecutar varias tareas de Gradle como una. Entonces en lugar de
./gradlew clean build publish
Quiero tener una tarea personalizada
./gradlew cleanBuildPublish
que se ejecuta clean buildy publishen orden.
¿Como es eso posible?
Esto no funciona
task cleanBuildPublish {
dependsOn 'clean'
dependsOn 'build'
dependsOn 'publish'
}

Respuestas:
Si necesita ejecutar algunas tareas en un orden predefinido, no solo debe establecer
dependsOn, sino también establecer lamustRunAfterpropiedad para estas tareas, como en el siguiente código:dependsOnno define un orden de ejecución de tareas, solo hace que una tarea dependa de otra, mientras que lomustRunAfterhace.fuente
Cannot invoke method mustRunAfter() on null objectcleanBuildPublishdespués de que se hayan definido todas las tareas individuales. Parece que las tareas de Gradle se leen de arriba a abajo. Eso resolvió mi problema paraCannot invoke method mustRunAfter() on null objectTambién puede utilizar la clase base de tareas llamada
GradleBuildAquí cómo puedes hacer eso con
GradleBuildfuente
project.tasks.registerpara crear su tarea y eso es todo.Si la tarea de publicación está en un subproyecto llamado subProjectName,
fuente
Pruebe la siguiente forma de hacer que cleanBuildPublish dependa de otras tareas
build.gradle
Salida
consulte https://docs.gradle.org/current/userguide/more_about_tasks.html#addDependencyUsingTask para obtener más detalles
fuente
Mi enfoque es
Esto funciona para mi.
fuente
Así es como lo hice, con la secuencia de comandos de Kotlin, usando depende de cómo y debeRunAfter. A continuación, se muestra un ejemplo de ejecución de dos tareas, una (tarea "importUnicodeFiles" registrada personalizada) que se encuentra en "este" proyecto y otra (tarea "ejecución" predefinida) que está en un proyecto hermano llamado ": unicode":
Los desarrolladores de Gradle generalmente desaconsejan este enfoque (dicen que forzar el pedido es malo y que ejecutar tareas de otros proyectos es malo), y están trabajando en una forma de publicar resultados entre proyectos; ver: https://docs.gradle.org/current/userguide/cross_project_publications.html
fuente
Así es como lo hice, con la secuencia de comandos de Kotlin, usando depende de cómo y debeRunAfter. A continuación, se muestra un ejemplo de ejecución de dos tareas, una (tarea "importUnicodeFiles" registrada personalizada) que se encuentra en "este" proyecto y otra (tarea "ejecución" predefinida) que está en un proyecto hermano llamado ": unicode":
fuente
Intente agregar
defaultTasksbuild.gradle. Por ej.defaultTasks 'clean', 'build', 'publish'fuente