簡體   English   中英

Java Ant:如何設置允許文件覆蓋的“應用”任務?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM