Frage

Natürlich kann es mit dem getan werden exec task, aber meine Frage ist:

Ist es möglich, dies mit der TAR -Aufgabe zu tun?

War es hilfreich?

Lösung

Ich glaube nicht, dass es eine Möglichkeit gibt, bestehende Berechtigungen zu behalten Aufgabe kopieren:

UNIX -Anmerkung: Dateiberechtigungen werden nicht beibehalten, wenn Dateien kopiert werden. Sie haben stattdessen die Standard -Ummask -Berechtigungen. Dies wird durch das Fehlen aller Mittel zur Abfrage oder Festlegung von Dateiberechtigungen in den aktuellen Java -Laufzeiten verursacht. Wenn Sie eine Kopiefunktion für die Erziehung der Berechtigte benötigen, verwenden Sie <exec executable="cp" ... > stattdessen.

Jedoch das Teeraufgabe kann einen oder mehrere nehmen tarfileset Elemente. Das tarfileset kann mit a definiert werden filemode und/oder dirmode Attribut zum Angeben der UNIX -Berechtigungen. Wenn Sie mehrere enthalten, einschließlich der Übereinstimmung mit nur diesen Dateien, um jede Menge der erforderlichen Berechtigungen zu erhalten, werden die Dateien in diesem Satz in diese Berechtigungen enthalten.

Andere Tipps

Diese mangelnde Erlaubnis macht die Ameisen -Teer -Aufgabe für mich fast nutzlos. Es gibt keine Möglichkeit, dies zu tun, ohne den Betriebssystem -Teer mit dem auszuführen EXEC -Aufgabe:

    <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>

Es gibt Gnu -Tar -Binärdateien für fast alle Betriebssysteme, die dem Menschen bekannt sind. Stellen Sie einen davon in Ihr Versionskontrollsystem ein und verwenden Sie es je nach Betriebssystem. Ja, Ant muss jedes Mal, wenn er ausgeführt wird, einen Prozess auswirken.

Die Verwendung von Tarfileset hat für unser Projekt funktioniert. Hier ist ein funktionierendes Beispiel für den Fall, dass jemand es braucht:

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

In diesem Beispiel wird includeList.txt verwendet, um zu sagen, welche Dateien in die TAR -Datei aufgenommen werden sollen. Alle Dateien mit *.SH -Erweiterung haben die Berechtigung (550) für den Benutzer und die Gruppe gelesen und ausgeführt.

Hoffe das hilft jemandem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top