Comment puis-je utiliser la tâche Ant de goudron et de préserver les autorisations de fichiers?

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

  •  19-09-2019
  •  | 
  •  

Question

Bien sûr, il peut être fait en utilisant le exec task, mais ma question est la suivante:

Est-il possible de le faire en utilisant la tâche de goudron?

Était-ce utile?

La solution

Je ne pense pas qu'il y ait un moyen de conserver les autorisations existantes, par cette note de la tâche de copie :

  

Unix Note: autorisations de fichiers ne sont pas conservés lorsque les fichiers sont copiés; ils finissent avec les autorisations de UMASK par défaut au lieu. Ceci est dû à l'absence de moyens de requête ou autorisations de fichiers définis dans les runtimes Java actuels. Si vous avez besoin d'une fonction de copie en conservant la permission, utiliser <exec executable="cp" ... > à la place.

Cependant, la peut prendre une ou plusieurs les éléments de tarfileset. Le tarfileset peut être définie avec un attribut filemode et / ou dirmode pour spécifier les autorisations unix. Si vous spécifiez plusieurs apparie uniquement les fichiers pour obtenir chaque ensemble d'autorisations nécessaires, les fichiers de cet ensemble seront inclus dans ces autorisations.

Autres conseils

Cette absence d'autorisation rend la tâche de goudron fourmi presque inutile pour moi. Il n'y a aucun moyen de le faire sans exécuter le goudron de système d'exploitation avec la tâche 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>

Il y a des binaires GNU tar presque tous les systèmes d'exploitation connus à l'homme. Mettez un d'entre eux dans votre système de contrôle de version et de l'utiliser en fonction de votre système d'exploitation. Oui, Ant devra un processus à chaque fourche fois qu'il est exécuté.

Utilisation tarfileset a travaillé pour notre projet. Voici un exemple de travail au cas où quelqu'un a besoin:

    <tar destfile="${dist}/${module.name}-${version}.tar">
        <tarfileset dir="${package.dir}" filemode="550" includesfile="${home.dir}/includelist.txt">
            <include name="*.sh"/>
        </tarfileset>
    </tar>

Dans cet exemple, includelist.txt est utilisé pour indiquer les fichiers à inclure dans le fichier tar. Tous les fichiers avec l'extension * .sh auront lecture et d'exécution (550) pour l'utilisateur et le groupe.

Espérons que cela aide quelqu'un.

scroll top