2014-07-14 70 views
1

我想在任務之間設置簡單的依賴關係。Gradle任務dependsOn不起作用

build.gradle

apply plugin: 'java' 

sourceCompatibility = 1.8 
version = '1.0' 

repositories { 
    mavenCentral() 
} 

task('Second', dependsOn: 'First') { 
    println "Second" 
} 

task('First') { 
    println "First" 
} 

因此,我希望FirstSecond。 但我得到了:

$ gradle build 
Second 
First 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:jar UP-TO-DATE 
:assemble UP-TO-DATE 
:compileTestJava UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 
:check UP-TO-DATE 
:build UP-TO-DATE 

我在做什麼錯? 感謝您的幫助。

回答

9

還是一樣的錯誤..你在配置階段。添加行動到任務,一切都會好起來的。這將工作:

apply plugin: 'java' 

sourceCompatibility = 1.8 
version = '1.0' 

repositories { 
    mavenCentral() 
} 

task('Second', dependsOn: 'First') << { 
    println "Second" 
} 

task('First') << { 
    println "First" 
} 

這是一個配置階段:

task t1 { 
    println "t1" 
} 

代碼在配置階段行動之前執行。添加動作由<<(leftShift)操作符完成。

task t1 << { 
    println "t1" 
} 

Here是文檔。

<<只是被覆蓋的操作者做的doLast方法。沒有它,它將是:

apply plugin: 'java' 

sourceCompatibility = 1.8 
version = '1.0' 

repositories { 
    mavenCentral() 
} 

task('Second', dependsOn: 'First') { 
    doLast { 
     println "Second" 
    } 
} 

task('First') { 
    doLast { 
     println "First" 
    } 
} 
+2

我推薦始終使用'doLast'而不是'<<'。前者允許結合配置和添加任務動作,並且更不容易出錯。 –

+0

@Opal,謝謝! – Laurent