所以,我有以下似乎现在正在按需工作的
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 }
}
因此,我的主要问题是如何在任务中编写常规脚本,使其仅在该任务运行时运行? (我以为上面的代码是古怪的脚本,但似乎每次都运行)
谢谢,
院长
最佳答案
Gradle构建分三个阶段进行:初始化,配置和执行。构建脚本中的大多数代码都在配置阶段进行评估,这与最终将运行哪些任务无关。 (只有知道了所有任务及其依赖项后,才在配置阶段的最后确定要运行的任务。)要添加在任务执行时和任务执行时(即在执行阶段)运行的代码,您可以使用doFirst
或doLast
向任务添加所谓的任务 Action 。例如:
task copyJars {
doLast { /* put any Groovy code here */ }
}
您可以在Gradle User Guide中了解有关这些概念的更多信息。
关于gradle - 如何只在gradle中使用基本的Groovy脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289876/