2012-06-19 51 views
0

Gradle給我適合。我有一個build.gravle,它包含了java插件,我在其中構建了一個任務,生成一個屬性文件並將其放入build/classes目錄中。這一切都像一個冠軍。這是我的自定義任務。如何使Java插件類任務依賴於我自己的任務?

task generateBuildSignature << { 
    def whoami = System.getProperty('user.name'); 
    def hostname = InetAddress.getLocalHost().getHostName(); 
    def buildTag = System.env.BUILD_TAG ?: "dev" 

    ant.propertyfile(file: "${buildDir}/buildsignature.properties", comment: "This file is automatically generated - DO NOT EDIT!") { 
     entry(key: "version", value: "${project.version}") 
     entry(key: "buildTimestamp", value: "${new Date().format('yyyy-MM-dd HH:mm:ss z')}") 
     entry(key: "buildUser", value: "$whoami") 
     entry(key: "buildSystem", value: "$hostname") 
     entry(key: "buildTag", value: "$buildTag") 
    } 
} 

現在,我想這個任務集成到Java構建的生命週期,最好processResources後立即或類依賴的執行,但我在文件http://gradle.org/docs/current/userguide/java_plugin.html的第23章,這是不但清楚地知道如何讓我的任務進入通過java插件進入的任務的依賴鏈。任何建議爲剛剛起步的gradle用戶?

回答

1

所有你必須(和可以)做的是添加一個任務依賴。例如:

classes.dependsOn(generateBuildSignature) 
+0

這將工作。我的問題是我立即在generateBuildSignature的任務聲明之前在我的build.gradle文件中使用了clases.dependsOn(generateBuildSignature)。這是產生「無法找到屬性'generateBuildSignature'任務':類'。」故障。切換這兩個build.gradle文件(任務generateBuildSignature << {...}然後classes.dependsOn(generateBuildSignature))得到一切按計劃工作。謝謝。 –

+1

Gradle接受任務的多個表示。要依賴尚未聲明的任務,可以使用'classes.dependsOn(「generateBuildSignature」)'。 –

相關問題