Конечно, это можно сделать с помощью exec task
, но мой вопрос:
Можно ли это сделать с помощью задачи tar?
Конечно, это можно сделать с помощью exec task
, но мой вопрос:
Можно ли это сделать с помощью задачи tar?
Я не думаю, что есть способ сохранить существующие разрешения для этой заметки из задачи копирования:
Unix Примечание. Разрешения для файлов не сохраняются при копировании файлов; вместо этого они получают разрешения UMASK по умолчанию. Это вызвано отсутствием каких-либо средств для запроса или установки прав доступа к файлам в текущем времени выполнения Java. Если вам нужна функция копирования, сохраняющая разрешение, используйте
<exec executable="cp" ... >
.
Однако задача tar может принимать один или несколько tarfileset
. tarfileset
можно определить с помощью атрибута filemode
и/или dirmode
, чтобы указать разрешения unix. Если вы укажете, что несколько включили совпадение только этих файлов для получения каждого набора необходимых разрешений, файлы в этом наборе будут включены с этими разрешениями.
Это отсутствие разрешения делает задачу ant tar почти бесполезной для меня. Нет способа сделать это без выполнения деактивации операционной системы с задачей 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>
Существуют бинарные файлы gnu для почти всех операционных систем, известных человеку. Поместите одну из них в вашу систему контроля версий и используйте ее в зависимости от вашей операционной системы. Да, ant необходимо будет разветвлять процесс каждый раз, когда он запускается.
Использование tarfileset для нашего проекта. Вот рабочий пример, если кому-то это нужно:
<tar destfile="${dist}/${module.name}-${version}.tar">
<tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
<include name="*.sh"/>
</tarfileset>
</tar>
В этом примере, includeelist.txt используется, чтобы указать, какие файлы должны быть включены в файл tar. Все файлы с расширением *.sh будут иметь разрешение "Чтение и выполнение" (550) для пользователя и группы.
Надеюсь, это поможет кому-то.