2016-11-17 91 views
0

我需要一些Gradle構建文件的幫助。我有一些依賴頂層文件夾任務的子項目。我只需要執行test任務並將其分爲兩個單獨的測試任務。目前文件系統結構如下(標籤表示目錄內的文件):A.gradle的根據父項目的任務,Gradle子項目任務的語法是什麼?

top-level-project-folder 
    A.gradle 
    B.gradle 
    C-subproject-folder 
     C.gradle 
    D-subproject-folder 
     D.gradle 

內容(重構前):C.gradle的

subprojects { 
    tasks.test.dependsOn { 
     bTask 
    } 
} 
apply from: 'B.gradle' 

內容(重構前):

test { 
    ... 
} 

的重構後,C.gradle需要看起來像:

test { 
    ... 
} 

task runDifferentTests(type : Test) { 
    ... 
} 

棘手的部分是C.gradletest任務目前取決於bTask。但是,在重構之後,C.gradletest任務應該是而不是取決於bTask,但新的runDifferentTests任務應該取決於bTask。 (目前,D.gradletest任務被標記爲取決於bTask,但它並不實際依賴於它 - 我想刪除該依賴關係。依賴於bTask的兩個子項目中唯一的任務是新的runDifferentTests任務)

我試過一些不同的東西,但似乎無法找到工作解決方案。

回答

0

只需卸下申報subprojects,並直接申報子項目你的依賴,在C.gradle

runDifferentTests.dependsOn rootProject.bTask 
+0

起初我以爲你的意思是'runDifferentTests.de pendsOn A.bTask'這給出了錯誤。我花了一分鐘才意識到你的意思是一個字面的'rootProject'。這是很好的知道,非常感謝你! – Eddified

0

有幾個語法的解決方案在這裏:

runDifferentTests.dependsOn (":bTask") 

runDifferentTests.dependsOn rootProject.bTask 

task runDifferentTests(type : Test, dependsOn: [":bTask"]) { 
... 
} 

task runDifferentTests(type : Test) { 
dependsOn rootProject.bTask 
... 
} 

//in the root build.gradle to apply to all subprojects at once. 
subprojects { 
    runDifferentTests.dependsOn (":bTask") 
} 

runDifferentTests.dependsOn { 
    tasks.findAll { task -> task.name.startsWith('bTask') } 
} 

:可以用來去一級而不是rootProject取決於首選項和項目結構

相關問題