2011-12-12 67 views
8

我認爲uploadArchives是一個由java插件提供的任務。 在我的build.gradle我使用java插件:爲什麼uploadArchives未在任務列表中列出?

apply plugin: 'java' 

但是,如果我在命令行調用gradle tasks,我不能看到uploadArchives任務。

即使不gradle這個gradle tasks --all

的uploadArchives任務是gradle這個Java插件文檔中列出 看到http://www.gradle.org/java_plugin(表11)。

我使用gradle版本1.0-milestone-6。

我可以調用gradle uploadArchives沒有錯誤,但該任務沒有列出。

回答

9

uploadArchives任務作爲規則添加到您的構建腳本中,而不是按名稱明確添加。在「gradle這個任務」的輸出,你應該看到這樣一行:

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

這意味着,在您的構建文件中的每個配置中,根據uploadTask存在。 java插件將一個名爲archives的配置添加到您的構建腳本中。通過在java插件中顯式地將配置「archives」添加到構建腳本中,uploadArchives任務也會隱式添加。

有些場景,其中gradle無法知道規則需要實現哪些任務。

E.g.

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

有沒有辦法找出哪些通過「gradle這個pingServer1 pingServer2 pingServer3」

問候從命令行觸發時平任務應顯示爲他們只是物化, 勒

+0

我知道你是一個gradle開發人員......所以這些隱含的任務不應該列在任務列表中嗎? – Cengiz

+1

這些任務由規則應用。這就是爲什麼它們不會出現在普通任務列表中,而是出現在輸出的底部。其中一個原因是,它們是在從命令行調用或在構建腳本中引用它們時即時創建的。 –

+1

規則的另一個例子是由'base'插件引入的「Pattern clean 」。當你調用cleanCompileJava gradle時,如果找不到具有該名稱的任務,但會發現一條規則說明它匹配現有任務(compileJava)的「乾淨」+名稱的這種模式。在執行該規則時,即時創建的任務「cleanCompileJava」將刪除「compileJava」任務的輸出。我認爲用每項生產任務的所有清潔任務同伴來污染任務概覽是沒有意義的。 –

1

uploadArchives任務是maven-plugin的一部分。您必須添加:

apply plugin: 'maven' 
+0

我可以調用'gradle uploadArchives'沒有錯誤,沒有Maven插件。 – Cengiz

+0

奇怪;一直以爲它屬於maven-plugin。您已按照http://gradle.org/maven_plugin中所述聲明'uploadArchives {}'配置。 – thoredge

+0

沒有沒有宣佈它。 uploadArchives在這種情況下不做任何事情。下面是輸出: ' > gradle這個uploadArchives :compileJava UP-TO-DATE :processResources UP-TO-DATE :類UP-TO-DATE :罐UP-TO-DATE : uploadArchives BUILD BUILD SUCCESSFUL ' – Cengiz

相關問題