2010-03-02 8 views
9

ich eine Ameise build.xml Datei zu schreiben, die macht folgendes:Dateiberechtigungen beibehalten, wenn Entpacken und die Zippen von Dateien mit Ameise

  • nimmt einen ZIP-Ordner (.zip)
  • Entpackt es
  • Fügt eine Reihe von Dateien
  • Zips bis die resultierenden Dateien

ein Auszug aus dem Code von build.xml:

Das alles funktioniert perfekt, außer dass die Berechtigungen für die gezippten Dateien vor dem Ausführen des Ameisenbaus in der ZIP-Datei, die vom Ameisenbau erstellt wurde, verloren gehen. Zum Beispiel, Dateien, die zuvor ausführbar waren, sind nicht mehr.

Also meine Frage: ist es möglich, Ameisen zu verwenden, um Dateien zu einem Zip-Archiv hinzufügen, ohne die Berechtigungen der bereits vorhandenen Dateien zu zerstören?

Ich verwende Ant 1.7.1

Antwort

3

Stellt sich heraus, dass Ant alle Informationen über Berechtigungen beim Entpacken aufgrund einer Einschränkung in Java zerstört. Was jedoch möglich ist, Dateien zu einer vorhandenen ZIP-Datei hinzuzufügen, die die Berechtigungen der vorhandenen Dateien bewahrt:

<!-- Add to zip --> 
<zip destfile="${existingZipFiledirectory}.zip" 
    basedir="${directoryOfFilesToAdd}" 
    update="true" 
/> 

Das obige Skript wird die Zip-Datei angegeben mit dem Inhalt in basedir, Konservierungsdateiberechtigungen in der Aktualisierung Original-Reißverschluss.

-1

Soweit ich weiß, ist diese Funktion (preserve0permissions) wurde mit Ant 1.8 eingeführt. Frühere Versionen von Ant behielten die Berechtigungen nicht bei.

Wenn Sie mit Ant 1.7.1 festgefahren sind, können Sie Tar verwenden, das - wenn ich mich nicht irre - die Berechtigungen speichert.

+1

Nein, 'preserveOpermissions' ist anders, das hängt mit dem Fall zusammen, in dem Sie Einträge zu einer Zip-Datei hinzufügen (mit' '). Ant war immer in der Lage, Berechtigungen von einer Zip-Datei in eine andere zu kopieren, jedoch vor Ant 1.8 Wenn die Quell-Zip-Datei im Berechtigungsfeld für einen bestimmten Eintrag einen Wert von Null hatte, wurde der Eintrag in der Zieldatei immer mit den Standardberechtigungen (normalerweise 644 oder 755) erstellt. 'preserve0permissions =" ​​yes "' behält stattdessen den Nullwert in der Ziel-Zip-Datei bei. –

7

Ich traf gleiches Problem, wenn Ant unzip Ziel mit:

<unzip src="${project.build.directory}/${project.build.finalName}.zip" dest="${user.home}/apps" overwrite="true" /> 

Die Genehmigung von Shell-Skripten in der Zip-Datei verloren war, wenn sie über das unzip Ziel verwenden.

Nach ein paar Untersuchungen, ich benutze die folgende 'exec' ant Ziel mit entpacken Befehlszeilenparameter, es hat funktioniert.

Ich hoffe, dass dies jemand anderem helfen kann, wenn diese Art von Problemen auftreten.

Danke, J

+0

Das entzippt Ihre Zip-Datei und Sie haben die gleichen Berechtigungen wie beim Zip-up? – fscore

+0

Ja, ich denke schon. –

6

Sie können nicht die Zip-Aufgabe bekommen Dateiberechtigungen zu erhalten, aber Sie können sie explizit festgelegt:

<zip destfile="installer.zip" > 
<zipfileset filemode="755" dir="../" includes="artisan/install.*" /> 
</zip> 

(Dies ist für mich unter Windows und OSX gearbeitet)

+0

Es funktioniert auch unter GNU Linux, ich habe es gerade mit Mageia Linux 4 getestet. Danke. – gouessej

Verwandte Themen