gradle: descarga y descomprime el archivo desde la URL

¿Cuál sería la forma correcta de descargar y descomprimir el archivo de url ( http )?

Si es posible, me gustaría evitar que vuelva a descargar cada vez que ejecute la tarea (en ant.get se puede lograr mediante skipexisting: 'true' ).

Mi solución actual sería:

 task foo { ant.get(src: 'http://.../file.zip', dest: 'somedir', skipexisting: 'true') ant.unzip(src: 'somedir' + '/file.zip', dest: 'unpackdir') } 

aún así, esperaría una solución libre de ants. ¿Alguna posibilidad de lograr eso?

Actualmente no hay una API de Gradle para descargar desde una URL. Puede implementar esto usando Ant, Groovy o, si desea beneficiarse de las funciones de resolución de caché / resolución de Gradle, simulando que es un repository de Ivy con una URL de artefacto personalizada. La descompresión puede realizarse de la forma habitual de Gradle (método de copy o tarea de Copy ).

@CMPS:

Entonces digamos que desea descargar este archivo zip como una dependencia:

 https://github.com/jmeter-gradle-plugin/jmeter-gradle-plugin/archive/1.0.3.zip 

Usted define su repo de hiedra como:

 repositories { ivy { url 'https://github.com/' layout 'pattern', { artifact '/[organisation]/[module]/archive/[revision].[ext]' } } } 

y luego usarlo como:

 dependencies { compile 'jmeter-gradle-plugin:jmeter-gradle-plugin:1.0.3@zip' //This maps to the pattern: [organisation]:[module]:[revision]:[classifier]@[ext] } 

Tomando prestada la tarea de descomprimir de @Matthias, excepto al levantar el archivo zip de la memoria caché de Gradle:

 task unzip(type: Copy) { def zipPath = project.configurations.compile.find {it.name.startsWith("jmeter") } println zipPath def zipFile = file(zipPath) def outputDir = file("${buildDir}/unpacked/dist") from zipTree(zipFile) into outputDir } 

Descomprimir usando la tarea de copia funciona así:

 task unzip(type: Copy) { def zipFile = file('src/dists/dist.zip') def outputDir = file("${buildDir}/unpacked/dist") from zipTree(zipFile) into outputDir } 

http://mrhaki.blogspot.de/2012/06/gradle-goodness-unpacking-archive.html