Como posso usar a tarefa de alcatrão de formiga e preservar as permissões de arquivos?
-
19-09-2019 - |
Pergunta
Claro que pode ser feito usando o exec task
, mas minha pergunta é:
É possível fazer isso usando a tarefa alcatrão?
Solução
Eu não acho que exista uma maneira de manter as permissões existentes, de acordo com esta nota do copiar tarefa:
NOTA UNIX: As permissões de arquivo não são retidas quando os arquivos são copiados; Eles acabam com as permissões padrão do UMAk. Isso é causado pela falta de qualquer meio de consultar ou definir permissões de arquivo no atual Java RunTimes. Se você precisar de uma função de cópia de preservação de permissão, use
<exec executable="cp" ... >
em vez de.
No entanto, o Tarefa alcatrão pode levar um ou mais tarfileset
elementos. o tarfileset
pode ser definido com um filemode
e/ou dirmode
atributo para especificar as permissões do UNIX. Se você especificar múltiplas incluir a correspondência apenas desses arquivos para obter cada conjunto de permissões necessárias, os arquivos nesse conjunto serão incluídos nessas permissões.
Outras dicas
Essa falta de permissão torna a tarefa de alcatrão de formiga quase inútil para mim. Não há como fazer isso sem executar o alcatrão do sistema operacional com o tarefa executiva:
<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>
Existem binários GNU TAR para quase todos os sistemas operacionais conhecidos pelo homem. Coloque um deles no seu sistema de controle de versão e use -o dependendo do seu sistema operacional. Sim, a Ant precisará bifurcar um processo toda vez que for executado.
Usar Tarfileset funcionou para o nosso projeto. Aqui está um exemplo de funcionamento, caso alguém precise:
<tar destfile="${dist}/${module.name}-${version}.tar">
<tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
<include name="*.sh"/>
</tarfileset>
</tar>
Neste exemplo, o Incluirelist.txt é usado para informar quais arquivos incluir no arquivo TAR. Todos os arquivos com extensão *.sh terão permissão de ler e executar (550) para o usuário e o grupo.
Espero que isso ajude alguém.