Para ampliar la respuesta de Blaine, puede usar elementos secundarios
<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>
No puedes almacenar permisos de archivos de Linux/Unix en un archivo ZIP.
Editar (después de los comentarios) al usar el campo "atributos externos" dentro del encabezado ZIP, estos atributos se pueden almacenar dentro de un archivo ZIP. unzip
de GNU aparentemente puede leer ese campo adicional y restaurar los permisos del archivo.
El formato TAR, que es un formato "nativo" de Unix/Linux, ha sido diseñado para incluir atributos de archivo y Ant puede crear archivos TAR que conservarán los atributos en todos los sistemas operativos Linux/Unix.
<tar compression="gzip" destfile="my-archive.tgz"> <tarfileset mode="544" dir="dir_with_shell_scripts"> <include name="*.sh"/> </tarfileset> </tar>
Creo que puedes hacer esto con Apache Commons Compress.
Primer párrafo:
Acceso a atributos internos y externos (que se utilizan para almacenar permisos de Unix en algunas implementaciones zip).
Eche un vistazo a la API y busque setUnixMode()
No tiene que cambiar a archivos tar. No sé por qué las personas que no conocen a Ant ofrecen consejos sobre este tema.
Utilice el parámetro de modo de archivo de zipfileset. Documentado en http://ant.apache.org/manual/Types/zipfileset.html