gpt4 book ai didi

java - 如何在Gradle中订购配置任务的 'running'?

转载 作者:行者123 更新时间:2023-12-03 05:15:49 26 4
gpt4 key购买 nike

我目前有一个配置任务由我从命令行调用的执行任务所依赖,即

task deployTest(dependsOn: [build, assembleForTest]) << {
...
}

该任务从本质上应该是抓取我在 中组装的文件assembleForTest ,然后部署它们(ssh等)

我的 assembleForTest 代码:
task assembleForTest(type: Sync) {
fileMode = 0775
from ("scripts") {
include "**/*.cgi"
filter(org.apache.tools.ant.filters.ReplaceTokens,
tokens: [programName: programName,
version: version,
dbServer: dbServerTest,
deployDir: deployDirTest])
}
from files("scripts/" + programName + ".cgi")
from files("build/libs/" + programName + "-" + version + ".jar")
into ("build/" + programName)
}

但是问题是:我的项目在此配置任务 assembleForTest 运行之后构建。即它将在组装完成后尝试构建,这意味着尝试了过时(或不存在)的部署。

Gradle有一些我见过的最糟糕的文档,我已经使用了一段时间,但我仍然不了解理想的设置。

最佳答案

那不能解决您的问题吗?

task assembleForTest(type: Sync, dependsOn: build) {
/* configuration phase, evaluated always and before execution phase of any task */
...
}

task deployTest(dependsOn: assembleForTest) << {
/* execution phase, evaluated only if the task is invoked and after configuration phase for all tasks has been finished */
...
}

编辑:我在示例中添加注释。请注意,第一个任务具有配置,而第二个任务具有 Action 。切换是通过左移位运算符完成的。替代语法对合并两个阶段的定义特别有帮助,如下所示:
task plop() {
// some configuration
...
doLast {
// some action
...
}
}

如果将 println代替“某些配置”,则无论调用什么任务,它都会始终打印,因为这是在配置阶段进行评估的。

关于java - 如何在Gradle中订购配置任务的 'running'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com