Я пишу муравью файл build.xml, который делает следующее:
Извлечение кода из build.xml:
<!-- Unzip SDK to a temporary directory -->
<unzip src="${zipFile}" dest="tmp"/>
<!-- pull in the files from another directory -->
<copy todir="tmp/someDirectory" >
<fileset dir="${addedFiles}" />
</copy>
<!-- Zip up modified SDK -->
<zip destfile="${destDir}" basedir="tmp"/>
Это все работает отлично, за исключением того, что сет полномочий для заархивированных файлов до выполнения сборки муравья проигран в zip-файле, созданном сборкой муравья. Например, файлы, которые не были ранее исполняемым файлом больше.
Так мой вопрос: действительно ли возможно использовать муравья, чтобы добавить файлы к архиву zip, не уничтожая полномочия уже существующих файлов?
Я использую Муравья 1.7.1
Оказалось, что ant уничтожает всю информацию о разрешениях при распаковке из-за ограничения в Java. Однако возможно добавление файлов в существующий zip-файл с сохранением разрешений существующих файлов:
<!-- Add to zip -->
<zip destfile="${existingZipFiledirectory}.zip"
basedir="${directoryOfFilesToAdd}"
update="true"
/>
Приведенный выше сценарий обновляет указанный zip-файл содержимым в basedir, сохраняя разрешения файлов в оригинальном zip.
Насколько я знаю, эта функция (preserve0permissions) была введена в Ant 1.8. Предыдущие версии Ant не сохраняли разрешения.
Если вы застряли на Ant 1.7.1, вы можете использовать Tar, который - если я не ошибаюсь - сохраняет разрешения.