Как я могу использовать задачу муравья и сохранить разрешения на файл?

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

  •  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) для пользователя и группы.

Надеюсь, это кому -то поможет.

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