Как использовать FileList в качестве набора файлов в команде UptoDate Ant?

StackOverflow https://stackoverflow.com/questions/4564754

Вопрос

У меня есть цель build.xml Это создает zip -файл. Чтобы избежать создания ZIP, если файл не был обновлен, я хотел бы заранее проверить обновления. НАСКОЛЬКО МНЕ ИЗВЕСТНО, uptodate это задача для использования.

Вот соответствующие (упрощенные) разделы скриптов:

<filelist id="zip-files">
<file name="C:/main.exe" />
<file name="D:/other.dll" />
</filelist>

<target name="zip" depends="zip-check" unless="zip-uptodate">
<zip destfile="${zip-file}" >
    <filelist refid="zip-files" />
</zip>
</target>

<target name="zip-check">
 <uptodate property="zip-uptodate"
           targetfile="${zip-file}">
    <srcfiles refid="zip-files" />
 </uptodate>
</target>

Однако, uptodate терпит неудачу, потому что srcfiles должен ссылаться на а fileset, не filelist. Анкет Тем не менее, я не могу использовать fileset Потому что это потребовало бы dir Атрибут, который я не могу установить, потому что исходные файлы не разделяют базовый каталог.

Конечно, я мог бы просто скопировать все файлы в общий каталог, прежде чем застегнуть их, таким образом, имея возможность использовать fileset, но мне было интересно, было ли альтернативное решение.

Я использую Ant 1.8.1

Это было полезно?

Решение

Вместо использования <srcfiles>, попробуйте использовать <srcresources>. <srcfiles> Должен быть набор файлов, но <srcresource> может быть союз любой коллекции ресурсов, и это должно включать filelist.

Я не могу пройти тест прямо сейчас, но он должен выглядеть примерно так:

<filelist id="zip-files">
    <file name="C:/main.exe" />
    <file name="D:/other.dll" />
 </filelist>

 <target name="zip" depends="zip-check" unless="zip-uptodate">
     <zip destfile="${zip-file}" >
         <filelist refid="zip-files" />
     </zip>
</target>

<target name="zip-check">

    <union id="zip-union">
        <filelist refid="zip-files"/>
    </union>

    <uptodate property="zip-uptodate"
        targetfile="${zip-file}">
        <srcresources refid="zip-union" />
    </uptodate>
 </target>

Надеюсь, это сработает для вас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top