[英]How to stop Rake from unnecessarily executing file tasks with dependencies?
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
任務?
您的文件任務是錯誤的。 它聲明,好像它在根目錄中創建file
,但實際上它在directory
目錄中創建file
。 Rake 檢查file
存在於根目錄中,如果不存在,則運行任務。 為了使其正常工作,您需要重命名文件任務:
file "directory/file" => "directory" do
touch "directory/file"
end
desc "Create file"
task build: "directory/file"
這樣 Rake 檢查正確的文件是否存在並且不運行“目錄/文件”任務。
** Invoke build (first_time)
** Invoke directory/file (first_time, not_needed)
** Invoke directory (first_time, not_needed)
** Execute build
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.