Untuk memperluas jawaban Blaine, Anda dapat menggunakan elemen turunan
<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>
Anda tidak dapat menyimpan izin file Linux/Unix dalam file ZIP.
Edit (setelah komentar) dengan menggunakan bidang "atribut eksternal" di dalam header ZIP, atribut ini dapat disimpan di dalam file ZIP. unzip
GNU tampaknya dapat membaca bidang tambahan itu dan memulihkan izin file.
Format TAR - sebagai format Unix/Linux "asli" - telah dirancang untuk menyertakan atribut file dan Ant dapat membuat file TAR yang akan mempertahankan atribut di semua sistem operasi Linux/Unix.
<tar compression="gzip" destfile="my-archive.tgz"> <tarfileset mode="544" dir="dir_with_shell_scripts"> <include name="*.sh"/> </tarfileset> </tar>
Saya rasa Anda dapat melakukannya dengan Apache Commons Compress.
Paragraf pertama:
Akses ke atribut internal dan eksternal (yang digunakan untuk menyimpan izin Unix oleh beberapa implementasi zip).
Lihatlah API dan cari setUnixMode()
Anda tidak perlu beralih ke file tar. Saya tidak tahu mengapa orang yang tidak mengenal Ant menawarkan saran tentang topik ini.
Gunakan parameter filemode zipfileset. Didokumentasikan di http://ant.apache.org/manual/Types/zipfileset.html