2011-05-16 17 views
11

Estamos tratando de crear un archivo Zip de poca complejidad en Gradle desde varios árboles de fuentes del sistema de archivos, pero no importa cuántas especificaciones into proporcionemos, todo lo ubica en el mismo. ¿Es esto posible en Gradle?¿Tarea de Gradle Zip para hacer varios subárboles?

build/libs/foo.jar --> foo.jar 
bar/*    --> bar/* 

Estamos obteniendo de esta forma:

build/libs/foo.jar --> bar/foo.jar 
bar/*    --> bar/* 

El uso de este:

task installZip(type: Zip, dependsOn: jar) { 
    from('build/libs/foo.jar').into('.') 
    from('bar').into('bar') 
} 

Cualquier ayuda se agradece.

EDIT: Gradle 1,0-hito-3

Respuesta

18

Prueba esto:

task zip(type: Zip) { 
    from jar.outputs.files 
    from('bar/') { 
     into('bar') 
    } 
} 

En primer lugar ... el frasco debe estar en la raíz/de la cremallera (que parece ser lo que quiere) . En segundo lugar, al especificar el jar.outputs.files, hay un implícito dependsOn en la tarea jar, por lo que muestra otra forma de lograr lo que desea. Excepto con este enfoque, si el nombre del contenedor cambia con el tiempo, no importa. Avíseme si necesita ayuda adicional.

+0

No conocía ese método para extraer el archivo Jar o la depencencia implícita, así que gracias por eso. Sin embargo, lo anterior aún coloca los archivos jar en el directorio de la barra dentro del archivo Zip. –

+0

@ Alan Pensé que tal vez esto era un problema con la versión de gradle. Solo cambio a Milestone-3 (que está en sus notas) y lo probé. Tengo un proyecto con las mismas necesidades exactas y funciona bien. Por lo tanto, deberá compartir más información sobre su proyecto o crear un archivo para diagnosticar más. – kensipe

+0

Terminamos intentando algo más hoy y mutando con el tiempo, llegamos a una solución que funcionaba muy parecida a la que publicaste. No estoy seguro de por qué no funcionó para nosotros ayer. –

5

Aparentemente, los comentarios a una respuesta no permitirán una forma conveniente de mostrar más código ... o no es obvio :) Tengo un proyecto que es para un cliente ... por lo que no puedo compartir el proyecto completo/archivo de compilación. Esto es lo que puedo compartir (he cambiado el proyecto específico acron a XXX):

 
task zip(type: Zip) { 

    from jar.outputs.files 

    from('scripts/') { 
     fileMode = 0755 
     include '**/runXXX.sh' 
     include '**/runXXX.bat' 
    } 
    from('lib/') { 
     include '**/*.jar' 
     into('lib') 
    } 
    from('.') { 
     include 'xxx.config' 
    } 

} 

Esto crea un zip con el frasco proyecto en la raíz de la cremallera. Copia los guiones de un directorio a la raíz, copia el archivo de configuración en la raíz y crea un directorio en la raíz del zip con el nombre/lib y copia todos los jar del proyecto/lib al zip/lib.

Cuestiones relacionadas