我写了一个小任务,它从网上更新了一个Android库。这应该只在要求时完成。我知道,有一个'-x'选项,但这似乎只适用于gradle本身。每当我尝试使用Android Studio构建项目时,任务就会执行。有没有办法将特定任务排除在执行之外?
我的gradle任务看起来像:
task downloadSDK {
print 'Downloading SDK...'
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
ant.get(
src: 'http://example.com/SDK.zip',
username:properties.getProperty('USERNAME', null),
password:properties.getProperty('PASSWORD', null),
dest:"${buildDir}/sdk.zip",
verbose:true)
println 'done'
}
task updateSDK(type: Copy) {
print 'Copying SDK...'
delete "src/main/java/"
def zipFile = file("${buildDir}/sdk.zip")
def outputDir = file("src/main/java")
from zipTree(zipFile)
into outputDir
println 'done'
}
updateSDK.dependsOn downloadSDK
我认为我只需要将<<
添加到我的updateSDK,但它似乎不适用于复制任务。
答案 0 :(得分:0)
更深入地阅读gradle规范,我发现,Copy实际上不是一项任务,而是一项功能。所以,我的gradle任务必须看起来像:
task updateSDK << {
print 'Copying SDK...'
delete "src/main/java/"
def zipFile = file("${buildDir}/sdk.zip")
def outputDir = file("src/main/java")
copy {
from zipTree(zipFile)
into outputDir
}
println 'done'
}
不同之处在于我在任务中调用复制功能,以便doLast正常工作。