【发布时间】:2020-05-20 06:18:15
【问题描述】:
Rake 中的文件任务只应在其命名的文件尚不存在时执行。
我有一个构建directory 的文件任务和一个在该目录中创建file 的文件任务。现在除非目录存在,否则无法创建文件,因此我将目录任务设置为文件任务的依赖项:
file "directory" do
mkdir_p "directory"
end
file "file" => "directory" do
touch "directory/file"
end
desc "Create file"
task build: "file"
当我在这里第一次运行build 任务时,一切都按计划进行:首先创建目录,然后创建文件:
$ rake -t build
** Invoke build (first_time)
** Invoke file (first_time)
** Invoke directory (first_time)
** Execute directory
mkdir -p directory
** Execute file
touch directory/file
** Execute build
当我在创建文件及其包含目录后第二次运行它时,我希望 Rake 什么都不做 (not_needed),因为与文件任务相关的所有文件都已经存在。而是跳过了目录任务,但执行了文件任务:
$ rake -t build
** Invoke build (first_time)
** Invoke file (first_time)
** Invoke directory (first_time, not_needed)
** Execute file
touch directory/file
** Execute build
如果directory 和file 都已经存在,如何让Rake 不运行file 任务?
【问题讨论】: