Java Ant: Как настроить задачу «Применить», разрешив перезапись файла? - PullRequest
1 голос
/ 12 ноября 2009

Мой вызов приложения командной строки выглядит так:

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/" для прикладной задачи также не работают. Похоже, он просто не хочет переписывать существующие файлы. Есть ли способ заставить его работать, не записывая вывод в отдельную папку, затем удаляя все файлы из исходной папки и копируя файлы обратно в исходную папку?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 12 ноября 2009

Прежде всего, вы должны использовать <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), чтобы увидеть фактические командные строки, которые генерирует эта задача.

0 голосов
/ 12 ноября 2009

Если файл существует, я рекомендую сначала удалить его, используя ant Затем создайте НОВЫЙ файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...