Android Studio:从构建中排除 gradle 任务
Android Studio: exclude gradle task from build
我写了一个小任务,它从网络更新一个 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,但它似乎不适用于复制任务。
更深入地阅读 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 才能正常工作。
我写了一个小任务,它从网络更新一个 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,但它似乎不适用于复制任务。
更深入地阅读 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 才能正常工作。