2011-12-12 4 views
8

ho pensato uploadArchives è un compito fornito dal plugin java. Nel mio build.gradle io uso il plug-in Java:Perché uploadArchives non è elencato nell'elenco delle attività?

apply plugin: 'java' 

Ma se invoco gradle tasks sulla riga di comando, non riesco a vedere il compito uploadArchives.

Anche non con Gradle gradle tasks --all

Il compito uploadArchives è elencata nella documentazione Java Plugin Gradle vedere http://www.gradle.org/java_plugin (tabella 11).

Uso la versione gradle 1.0-milestone-6.

Posso invocare gradle uploadArchives senza errori, ma l'attività non è elencata.

risposta

9

Il compito uploadArchives viene aggiunto come regola per il vostro script di build e non per nome. Nella produzione di "compiti Gradle" si dovrebbe vedere questa linea:

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

Ciò significa che per ogni configurazione nel file di configurazione, un uploadTask secondo esiste. Il plugin java aggiunge una configurazione chiamata archivi al tuo script di compilazione. Aggiungendo la configurazione "archivi" allo script di build esplicitamente dal plugin java, l'attività uploadArchives viene aggiunta in modo implicito.

Ci sono scenari in cui gradle non può sapere quali attività devono essere materializzate da una regola.

E.g.

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

Non v'è alcun modo per capire quali compiti ping devono essere mostrati in quanto sono appena materializzati quando attivato da linea di comando via 'Gradle pingServer1 pingServer2 pingServer3'

saluti, René

+0

So che sei uno degli sviluppatori gradle ... Quindi non dovrebbero essere elencate anche queste attività implicite nell'elenco delle attività? – Cengiz

+1

Queste attività sono applicate da una regola. è per questo che non vengono visualizzati nell'elenco delle attività ordinarie ma nella parte inferiore dell'output.Una ragione è che vengono creati al volo solo quando vengono richiamati dalla riga di comando o quando si fa riferimento nello script di build. –

+1

Un altro esempio di regola è "Pattern clean " introdotto dal plug-in "base". Quando chiami cleancompileJava gradle non trova alcuna attività con quel nome, ma trova una regola che dice che corrisponde a questo modello di un nome + "pulito" di attività esistente (compileJava). nell'implementazione della regola l'attività "cleanCompileJava" creata al volo cancella l'output dell'attività 'compileJava'. Penso che non abbia senso inquinare la panoramica delle attività con tutti i compagni di lavoro puliti di ogni attività produttiva. –

1

L'attività uploadArchives è una parte del plugin maven. Bisogna aggiungere:

apply plugin: 'maven' 
+0

posso invocare 'gradle uploadArchives' senza errori e senza plugin maven. – Cengiz

+0

Strano; ho sempre pensato che appartenesse a Maven-plugin. Hai dichiarato la configurazione di uploadArchives {} come descritto in http://gradle.org/maven_plugin? – thoredge

+0

No, non l'ho dichiarato. Gli archivi upload non fanno nulla in quel caso. Ecco l'output: ' > uploadArchives Gradle : compileJava UP-TO-DATE : processResources UP-TO-DATE : classi UP-TO-DATE : Vaso di UP-TO-DATE : uploadArchives BUILD SUCCESSFUL ' – Cengiz

Problemi correlati