Как я могу использовать задачу муравья и сохранить разрешения на файл?
-
19-09-2019 - |
Вопрос
Конечно это можно сделать с помощью exec task
, но мой вопрос:
Можно ли сделать это с помощью задачи TAR?
Решение
Я не думаю, что есть способ сохранить существующие разрешения, согласно этой записке из Копировать задание:
UNIX Примечание: Разрешения на файле не сохраняются при копировании файлов; Вместо этого они получают разрешения Umask по умолчанию. Это вызвано отсутствием каких -либо средств для запроса или установки разрешений на файлы в текущем времени запуска Java. Если вам нужна функция копирования, обеспечивающая разрешение, используйте
<exec executable="cp" ... >
вместо.
Тем не менее TAR Задача может занять один или несколько tarfileset
элементы. А tarfileset
можно определить с помощью filemode
и/или dirmode
Атрибут, чтобы указать разрешения UNIX. Если вы указываете несколько включения сопоставления только этих файлов для получения каждого набора необходимых разрешений, файлы в этом наборе будут включены в эти разрешения.
Другие советы
Это отсутствие разрешения делает задачу муравей почти бесполезно для меня. Нет никакого способа сделать это без выполнения смолы операционной системы с exec Задача:
<exec executable="tar" output="/dev/null" os="Linux">
<arg value="--exclude-from=files_to_exclude.txt"/>
<arg value="-cvz"/>
<arg value="--file=${file.tar}"/>
<arg value="."/>
</exec>
Есть двойные двоичные файлы практически для всех операционных систем, известных человеку. Поместите один из них в систему управления версиями и используйте его в зависимости от вашей операционной системы. Да, муравьям нужно будет раскошелиться на процесс каждый раз, когда он запускается.
Использование Tarfileset работало для нашего проекта. Вот рабочий пример, если это кому -то понадобится:
<tar destfile="${dist}/${module.name}-${version}.tar">
<tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
<include name="*.sh"/>
</tarfileset>
</tar>
В этом примере includelist.txt используется для определения того, какие файлы включают в файл TAR. Все файлы с *.sh расширением будут иметь чтение и выполнение разрешения (550) для пользователя и группы.
Надеюсь, это кому -то поможет.