2017-02-16 39 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) 
    }