[英]Java Ant: How to setup “apply” task with allowing file overwriting?
我的命令行應用程序調用如下所示:
java -jar myapp.jar --output c:\test.txt c:\test.txt
讀取test.txt,對其進行處理,然后將結果保存到同一文件中。
我試圖用它來做螞蟻任務,但不知道如何使它使用相同的路徑進行輸入和輸出。
<target name="compress">
<apply executable="java" parallel="false">
<fileset dir="c:/test/" includes="*.txt">
</fileset>
<arg line="-jar"/>
<arg path="myapp.jar"/>
<srcfile/>
<arg line="--output"/>
<mapper type="glob" from="*" to="c:/test/*"/>
<targetfile/>
</apply>
</target>
這不起作用。 使用<mapper type="identity"/>
並為應用任務設置dest="c:/test/"
也不起作用。 看起來只是不想重寫現有文件。 有沒有一種方法可以使它工作而無需將輸出寫入單獨的文件夾,然后從原始文件夾刪除所有文件並將文件復制回原始文件夾?
謝謝。
首先,您應該使用<arg value="..."/>
而不是<arg line="..."/>
。 后者不適用於多個參數,通常應避免使用 。
其次, apply任務會將目標文件與源文件進行比較,如果兩者相同(或者目標文件比源文件新,這顯然不適用於您的情況),則不會調用該文件。 您可以使用force="true"
屬性來避免這種情況。
以下對我有用:
<target name="compress">
<apply executable="java" parallel="false" dest="c:/test/" force="true">
<fileset dir="c:/test/" includes="*.txt" />
<arg value="-jar"/>
<arg path="myapp.jar"/>
<srcfile/>
<arg value="--output"/>
<mapper type="identity"/>
<targetfile/>
</apply>
</target>
您可以在詳細模式下運行Ant(使用“ -v”開關)以查看此任務生成的實際命令行。
如果文件存在,我建議先使用ant刪除文件,然后創建新文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.