2017-02-16 81 views
0

我有一個項目有很多模塊(10+)。裏面每個build.gradle文件中,有一個任務:動態添加dependsOn到gradle任務

task findbugs(type: FindBugs, dependsOn: ':MODULENAME:compileReleaseSources') { 
    ignoreFailures = true 
    classes = fileTree('build/intermediates/classes/release/') 
    source = fileTree('src/main/java/') 
    classpath = files() 
    ... and so on 
} 

,所以我想提取這個任務,創建一個自定義script.gradle文件完成這個任務,並使用apply from: script.gradle它包括每一個build.gradle

問題在於,爲了達到這個目的,我需要將MODULENAME包含到dependsOn中。當我在每個build.gradle中都有任務時,根本沒有問題,因爲我剛剛對相應的模塊名稱進行了硬編碼(:app:compileReleaseSources, :firebase:compileReleaseSources等)。

有什麼辦法可以動態添加MODULENAME

+0

如果將該腳本應用到每一個模塊,我不認爲你需要的'應用:'前綴。你有沒有嘗試運行它的前綴? –

+0

如果您擁有每個模塊,則無需添加它,這是事實。但是,如果將任務提取到另一個文件並將其應用於其他模塊build.gradle,則必須添加,否則您會得到「模塊XXX中不存在任務」的異常。 –

回答

0

我想出的最簡單,最可靠的解決方案......

def getModuleName() { 
     return displayName.substring(displayName.indexOf(":"), displayName.length() - 1) 
    }