Gradle 跳过任务,因为它没有源文件和以前的输出文件
这是我的Gradle 跳过任务,因为它没有源文件和以前的输出文件,gradle,build.gradle,gradle-task,Gradle,Build.gradle,Gradle Task,这是我的build.gradle,它有三个任务(一个用于下载zip,一个用于解压缩,另一个用于执行sh文件)。这些任务相互依赖。我用的是Gradle 6。由于这些是相关任务,我使用了以下命令: gradlew C 我得到一个错误: 正在跳过任务“B”,因为它没有源文件和以前的输出文件 build.gradle: task A { description = 'Rolls out new changes' doLast { def url = "http
build.gradle
,它有三个任务(一个用于下载zip,一个用于解压缩,另一个用于执行sh文件)。这些任务相互依赖。我用的是Gradle 6。由于这些是相关任务,我使用了以下命令:
gradlew C
我得到一个错误:
正在跳过任务“B”,因为它没有源文件和以前的输出文件
build.gradle
:
task A {
description = 'Rolls out new changes'
doLast {
def url = "https://${serverName}/xxx/try.zip"
def copiedZip = 'build/newdeploy/try.zip'
logger.lifecycle("Downloading $url...")
file('build/newdeploy').mkdirs()
ant.get(src: url, dest: copiedZip, verbose: true)
}
}
task B (type: Copy, dependsOn: 'A') {
doLast {
def zipFile = file('build/newdeploy/try.zip')
def outputDir = file("build/newdeploy")
from zipTree(zipFile)
into outputDir
}
}
task C (type: Exec, dependsOn: 'B') {
doLast {
workingDir 'build/newdeploy/try/bin'
executable 'sh'
args arguments, url
ext.output = { return standardOutput.toString() }
}
}
我试着跟随,结果成功了。与其添加要复制的单独任务,不如在任务a本身中添加复制功能
task A {
description = 'Rolls out new changes'
doLast {
def url = "https://${serverName}/xxx/try.zip"
def copiedZip = 'build/newdeploy/try.zip'
logger.lifecycle("Downloading $url...")
file('build/newdeploy').mkdirs()
ant.get(src: url, dest: copiedZip, verbose: true)
def outputDir = file("build/newdeploy")
copy {
from zipTree(zipFile)
into outputDir
}
}
}
task C (type: Exec, dependsOn: 'A') {
doLast {
workingDir 'build/newdeploy/try/bin'
executable 'sh'
args arguments, url
ext.output = { return standardOutput.toString() }
}
}
在执行任务
B
和C
时,它们没有配置,因为doLast
闭包在任务执行后运行。由于未配置任务B
,因此它没有源文件,会被跳过。