enrique-j
5/16/2018 - 3:51 AM

Agregar dependencias a las tareas

Puede hacer que una tarea dependa de otra tarea, lo que significa que cuando una tarea finaliza solo entonces se iniciará la otra tarea. Cada tarea se diferencia con un nombre de tarea. La colección de nombres de tareas se refiere a su colección de tareas. Para referirse a una tarea en otro proyecto, debe usar la ruta del proyecto como un prefijo al nombre de tarea respectivo.

El siguiente ejemplo agrega una dependencia de taskX a taskY.

task taskX << {
   println 'taskX'
}
task taskY(dependsOn: 'taskX') << {
   println "taskY"
}

utilizando objetos de tareas en lugar de nombres

task taskY << {
   println 'taskY'
}
task taskX << {
   println 'taskX'
}

EJECUTAR
gradle –q taskY

Mediante cierres

En este caso, la tarea se libera a través del cierre. Si utiliza cierre en el script de compilación que debe devolver una sola tarea o colección de objetos de tareas. El siguiente ejemplo agrega una dependencia de taskX a todas las tareas del proyecto, cuyo nombre comienza con 'lib' .

task taskX << {
   println 'taskX'
}
taskX.dependsOn {
   tasks.findAll { 
      task → task.name.startsWith('lib') 
   }
}
task lib1 << {
   println 'lib1'
}
task lib2 << {
   println 'lib2'
}
task notALib << {
   println 'notALib'
}

//salida
lib1
lib2
taskX

Agregar una descripción a una tarea

task copy(type: Copy) {
   description 'Copies the resource directory to the target directory.'
   from 'resources'
   into 'target'
   include('**/*.txt', '**/*.xml', '**/*.properties')
   println("description applied")
}
//salida

C:\> gradle –q copy
Si el comando se ejecuta con éxito, obtendrá la siguiente salida.

description applied

Saltar tareas

Las tareas de omisión pueden realizarse pasando un cierre de predicado. Esto solo es posible si se ejecuta el método de una tarea o un cierre lanzando una StopExecutionException antes de que se ejecute el trabajo real de una tarea.

task eclipse << {
   println 'Hello Eclipse'
}

// #1st approach - closure returning true, if the task should be executed, false if not.
eclipse.onlyIf {
   project.hasProperty('usingEclipse')
}

// #2nd approach - alternatively throw an StopExecutionException() like this
eclipse.doFirst {
   if(!usingEclipse) {
      throw new StopExecutionException()
   }
}