2013-07-05 65 views
1

我有一個部署腳本,我將目錄移動到另一個目錄。在這個目錄中我有一個相對符號鏈接到父文件夾是這樣的:爲什麼移動任務不會移動符號鏈接?

abc -> ../dir/file 

dir/file也是其被部署的目錄。

我移動目錄與XML的下面幾行:

<move todir="${deploy.dir}"> 
    <fileset dir="${to.deploy}"> 
     <include name="**/*" /> 
    </fileset> 
</move> 

一切都被移動,但不是符號鏈接。留在${deploy.dir}。爲什麼?也許Ant不知道如何設置新的符號鏈接(新位置)?

你如何解決這個問題?刪除符號鏈接並使用symlink目標創建一個新目標?

回答

1

符號鏈接是特殊文件。螞蟻並沒有完全有能力處理它們。 Here is the note

螞蟻是不是在移動符號鏈接意識到,刪除,並在遞歸 目錄下建立文件列表的樹時。意外的 事情可能發生。

您需要一個自定義解決方案,可能使用readlink。問How do I move a relative symbolic link?和答案指向其他解決方案(無關的螞蟻,雖然)

+0

「意想不到的事情都可能發生」不健全,對我很好的部署腳本。這也可能意味着,它會把所有東西都刪除並刪除所有東西? :-)但是,我發現我可以用符號鏈接目標來完成它。我不知道爲什麼螞蟻能夠處理的鏈接目標中的符號鏈接,而不是目標的一舉一動... – tester

+0

@tester:Java不直接支持符號鏈接。螞蟻通過比較路徑(規範的和絕對的)工作解決。該說明表示這在非unix平臺上很容易出錯。 – Jayan