我写的一定数量的Gradle任务,不需要任何输入或输出。因此,当我调用它们时,这些任务始终会获得状态UP-TO-DATE
。一个例子:
task backupFile(type: Copy) << {
//Both parameters are read from the gradle.properties file
from file(adjusting_file.replaceAll("\"", ""))
into file(backupDestinationDirectory + "/main/")
println "[INFO] Main file backed up"
}
这导致以下输出:
:gradle backupFile
:backupFile UP-TO-DATE
有没有办法强制执行(ny)任务,无论什么? 如果有,是否也可以切换任务执行(例如告诉构建脚本要运行哪些任务以及忽略哪些任务)?
我不能省略<<
标签,因为这会使的任务始终执行,这不是我想要的。
非常感谢您的意见。
答案 0 :(得分:10)
必须在配置阶段中配置任务。但是,您要在任务操作(<< { ... }
)中对其进行配置,该操作在执行阶段中运行。由于您要配置任务太晚,Gradle会确定它无所事事并打印UP-TO-DATE
。
以下是正确的解决方案。同样,我建议使用doLast
代替<<
,因为它会导致语法更加规则,并且不太可能意外添加/省略。
task backupFile(type: Copy) {
from file(adjusting_file.replaceAll("\"", ""))
into file(backupDestinationDirectory + "/main/")
doLast {
println "[INFO] Main file backed up"
}
}
答案 1 :(得分:0)
我一直试图这么做很多天。 我必须在processResource步骤中创建许多intermidate jar。 需要在processResource步骤上创建一个。
processResources.dependsOn(packageOxygenApplet) //doesn't work
task packageOxygenApplet (type: Jar) {
println '** Generating JAR..: ' + rsuiteOxygenAppletJarName
from(sourceSets.main.output) {
include "org/worldbank/rsuite/oxygen/**"
}
baseName = rsuiteOxygenAppletJarName
manifest {
attributes("Build-By": oxygenUsername,
"Specification-Title": "Oxygen World Bank Plugin")
}
destinationDir = file("src/main/resources/WebContent/oxygen")
}