【发布时间】:2021-10-17 04:05:44
【问题描述】:
我们使用 gradle 增量构建并希望运行两个命令(理想情况下来自一个任务)。 here 的解决方案之一可以让这两个命令运行......但是它破坏了增量构建......它看起来像:
task myTask() {
inputs.files(inputFiles)
project.exec {
workingDir web
commandLine('mycmd')
}
project.exec {
workingDir web
commandLine('mysecond-cmd')
}
}
如果运行单个命令并且增量构建工作正常,任务看起来与此类似,似乎有所不同的是workingDir:
task myTask(type: Exec) {
workingDir myDir // this seems to trigger/enable continuos compilation
commandLine ('myCmd')
}
目前最好的选择是创建 3 个任务,一个用于我要运行的每个 cmdline 任务,第三个用于对它们进行分组,这看起来很脏。
问题是:有没有办法在一个任务中运行两个或多个命令而增量构建仍然有效?
【问题讨论】:
-
我查看了
Exec的代码,workingDir不考虑进行最新检查。这些命令会生成文件吗?增量构建通常仅在您同时声明输入 和 输出时才有效。myTask只声明输入。 -
感谢您的评论,这些命令仅运行构建步骤,没有有趣的输出文件。
-
Gradle 应该如何知道它是否需要再次运行该命令?我看不到任何自动创建和注册文件以证明命令已运行的内容。顺便说一句,您使用过“增量构建”、“增量编译”和“持续编译”,它们都是不同的东西。如果你能准确地澄清你想要发生的事情,也许会有所帮助。使用单个命令“增量编译”以什么方式工作?
-
我合并为增量构建,我正在寻找在文件更改时触发构建的功能......关于它应该如何知道的 gradle,这是问题的一部分,它很高兴知道增量构建是如何工作的(例如,我如何从没有输出文件的任务中发出信号表明构建应该监视某些文件)