Per espandere la risposta di Blaine, puoi utilizzare gli elementi figlio
<zip destfile="build/MyApplication.zip" encoding="UTF-8">
<zipfileset dir="${content-dir}" encoding="UTF-8"
includes="**/setup.sh" filemode="755"/>
<zipfileset dir="${content-dir}" encoding="UTF-8"
excludes="**/setup.sh"/>
</zip>
Non puoi archiviare i permessi dei file Linux/Unix in un file ZIP.
Modifica (dopo i commenti) utilizzando il campo "attributi esterni" all'interno dell'intestazione ZIP questi attributi possono essere memorizzati all'interno di un file ZIP. unzip
di GNU è apparentemente in grado di leggere quel campo aggiuntivo e ripristinare i permessi dei file.
Il formato TAR, essendo un formato Unix/Linux "nativo", è stato progettato per includere attributi di file e Ant può creare file TAR che conserveranno gli attributi su tutti i sistemi operativi Linux/Unix.
<tar compression="gzip" destfile="my-archive.tgz"> <tarfileset mode="544" dir="dir_with_shell_scripts"> <include name="*.sh"/> </tarfileset> </tar>
Penso che tu possa farlo con Apache Commons Compress.
Primo paragrafo:
Accesso agli attributi interni ed esterni (utilizzati per memorizzare i permessi Unix da parte di alcune implementazioni zip).
Dai un'occhiata all'API e cerca setUnixMode()
Non devi passare ai file tar. Non so perché le persone che non conoscono Ant offrano consigli su questo argomento.
Usa il parametro filemode di zipfileset. Documentato su http://ant.apache.org/manual/Types/zipfileset.html