2011-12-12 25 views
8

pensé que uploadArchives es una tarea que proporciona el plugin java. En mi build.gradle utilizo el plugin de java:¿Por qué LoadArchives no aparece en la lista de tareas?

apply plugin: 'java' 

Pero si invoco gradle tasks en la línea de comandos, no puedo ver la tarea uploadArchives.

Aún no con Gradle gradle tasks --all

La tarea uploadArchives aparece en la documentación plugin de Java Gradle ver http://www.gradle.org/java_plugin (tabla 11).

Uso la versión de gradle 1.0-milestone-6.

Puedo invocar gradle uploadArchives sin error, pero la tarea no aparece en la lista.

Respuesta

9

La tarea uploadArchives como una regla a su script de creación y no explícitamente por su nombre. En la salida de "tareas Gradle" debería ver esta línea:

 
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. 

Esto significa, que para cada configuración en el archivo de creación, existe un acuerdo uploadTask. El complemento java agrega una configuración llamada archivos a su script de compilación. Al agregar los "archivos" de configuración a su script de compilación explícitamente mediante el complemento java, la tarea uploadArchives también se agrega implícitamente.

Existen situaciones en las que gradle no puede saber qué tareas deben materializarse mediante una regla.

E.g.

tasks.addRule("Pattern: ping<ID>") { String taskName -> 
    if (taskName.startsWith("ping")) { 
     task(taskName) << { 
      println "Pinging: " + (taskName - 'ping') 
     } 
    } 
} 

No hay forma de averiguar qué tareas de ping deben mostrarse, ya que sólo se materializan cuando se activa desde la línea de comandos a través de 'Gradle pingServer1 pingServer2 pingServer3'

respecto, René

+0

Sé que eres uno de los desarrolladores de gradle ... ¿No deberían estas tareas implícitas aparecer también en la lista de tareas? – Cengiz

+1

Estas tareas se aplican mediante una regla. es por eso que no aparecen en la lista de tareas ordinarias sino en la parte inferior de la salida.Una razón para esto es que se crean sobre la marcha justo cuando se llaman desde la línea de comandos o cuando se hace referencia en el script de compilación. –

+1

Otro ejemplo de una regla es "Pattern clean " introducido por el complemento 'base'. Cuando llama a cleanCompileJava gradle no encuentra ninguna tarea con ese nombre, pero encuentra una regla que dice que coincide con este patrón de un nombre "limpio" + de tarea existente (compileJava). en la implementación de la regla, la tarea creada sobre la marcha "cleanCompileJava" elimina el resultado de la tarea 'compileJava'. Creo que no tiene sentido contaminar el resumen de la tarea con todos los compañeros de tareas limpias de cada tarea productiva. –

1

La tarea uploadArchives es una parte de maven-plugin. Hay que añadir: se añade

apply plugin: 'maven' 
+0

puedo invocar 'gradle uploadArchives' sin error y sin el complemento maven. – Cengiz

+0

Extraño; siempre pensé que pertenecía a maven-plugin. ¿Has declarado la configuración 'uploadArchives {}' como se describe en http://gradle.org/maven_plugin? – thoredge

+0

No, no lo han declarado. El uploadArchives no hace nada en ese caso. Aquí está la salida: ' > uploadArchives Gradle : compileJava ARRIBA AL DÍA : processResources ARRIBA AL DÍA : clases ARRIBA AL DÍA : Tarro ARRIBA AL DÍA : cargarArchivos CONSTRUIR EXITOSO ' – Cengiz

Cuestiones relacionadas