Pregunta

Estoy intentando crear mi propia tarea, que creará un paquete de todos los artefactos generados durante la compilación de mi multiproyecto.

Actualmente lo que hago bien ahora es solo:

gradle build createPackage

Lo que da un resultado como el siguiente:

: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

Con el createPackage siendo la tarea:

task createPackage {    
    println "Creating Package..."
    println "Created."
}

Sin embargo, me gustaría simplificarlo ejecutando un solo comando, entonces, ¿cuál sería la mejor manera de hacerlo y garantizar que el orden se mantenga?

Idealmente me gustaría llamar build dentro de createPackage tarea o anexarla a la build tarea con mi tarea.

¿Fue útil?

Solución

Ok, leyendo entre líneas hay algunas cosas que aclarar.

1) Sus printlns se ejecutan en la fase de configuración, no en la fase de ejecución.Ver http://www.gradle.org/docs/current/userguide/build_lifecycle.html para más información.

2) No tienes una sola tarea de "construcción". gradle build en la línea de comando ejecutará la tarea de 'construcción' de cada uno de sus subproyectos.La tarea de su paquete debería depender de todos ellos.Algo como..

apply plugin: 'java'
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   dependsOn subprojects*.build
}

3) Puede ser más declarativo con gradle: simplemente dígale qué desea empaquetar y descubrirá qué necesita ejecutar.Por ejemplo, puedes decir que quieres cerrar todos los frascos de tus subproyectos.

apply plugin: 'java'    
evaluationDependsOnChildren()
task createPackage(type:Zip) {
   from subprojects*.jar
}

Otros consejos

Hay muchas maneras.Una sugerencia es modificar build depender de createPackage para asegurarte de que puedes llamar solo gradle build.Entonces desea mejorar su tarea y decir cuáles son sus entradas (probablemente esas sean salidas de algunas otras tareas como jar).Gradle agregará estas tareas a la ejecución cuando ejecute la compilación y podrá volver a ejecutarlas según el estado actualizado de cada tarea.Esto está documentado en la guía del usuario. http://www.gradle.org/docs/current/userguide/more_about_tasks.html#sec:up_to_date_checks y más adelante en un capítulo sobre tareas personalizadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top