所以,我现在有以下似乎正在按预期工作
task deleteJars(type: Delete) {
ext.collection = files { genLibDir.listFiles() }
delete ext.collection
}
task copyJars(type: Copy) {
from(configurations.compile) {}
from(fixedLibDir) {}
into genLibDir
}
copyJars.dependsOn('deleteJars')
我有几个问题
我可怕的尝试在任务依赖时进行常规运行(但不幸的是,无论我选择了什么目标并且每次运行都运行)...
task('copyJars') {
ext.collection = files { genLibDir.listFiles() }
delete ext.collection
copy { from configurations.compile into genLibDir }
copy { from fixedLibDir into genLibDir }
}
所以我的主要问题是如何在任务中编写groovy脚本,以便它只在该任务运行时运行? (因为我认为上面是groovy脚本,但它似乎每次都运行)
感谢, 迪安
答案 0 :(得分:2)
Gradle构建分三个阶段进行:初始化,配置和执行。构建脚本中的大多数代码都在配置阶段进行评估,这与最终将运行的任务无关。 (决定哪些任务只在配置阶段的最后,一旦所有任务及其依赖项都已知,就会进行。)要添加在任务执行时(即在执行阶段)运行的代码,使用doFirst
或doLast
向任务添加所谓的任务操作。例如:
task copyJars {
doLast { /* put any Groovy code here */ }
}
您可以在Gradle User Guide。
中详细了解这些概念答案 1 :(得分:0)
task copyJars() {
doLast {
ext.collection = files { genLibDir.listFiles() }
delete ext.collection
copy { from configurations.compile into genLibDir }
copy { from fixedLibDir into genLibDir }
}
}