versiones releases org online http download gradle unzip

http - releases - gradle-descargar y descomprimir el archivo de url



org gradle (4)

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

Si es posible, me gustaría evitar que se vuelvan a descargar cada vez que ejecuto la tarea (en ant.get se puede lograr 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 hormigas. ¿Alguna posibilidad de lograr eso?


@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] }

Tomar prestado la tarea de descompresión de @Matthias, excepto recoger el zip de la 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 }


Actualmente no hay una API de Gradle para descargar desde una URL. Puede implementar esto utilizando Ant, Groovy o, si quiere beneficiarse de las funciones de resolución de dependencias / almacenamiento en caché de Gradle, simulando que es un repositorio Ivy con una URL de artefacto personalizada. La descompresión se puede hacer de la manera habitual de Gradle (método de copy o tarea de Copy ).


Conseguí que la respuesta de @ RaGe funcionara, pero tuve que adaptarla, ya que el método de diseño de hiedra se ha depreciado, vea https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.repositories.IvyArtifactRepository.html#org.gradle.api.artifacts.repositories.IvyArtifactRepository:layout(java.lang.String,%20groovy.lang.Closure)

Así que para hacerlo funcionar, tuve que ajustarlo a esto para un adaptador keycloak tomcat:

ivy { url ''https://downloads.jboss.org/'' patternLayout { artifact ''/[organization]/[revision]/adapters/keycloak-oidc/[module]-[revision].[ext]'' } } dependencies { // https://downloads.jboss.org/keycloak/4.8.3.Final/adapters/keycloak-oidc/keycloak-tomcat8-adapter-dist-4.8.3.Final.zip compile "keycloak:keycloak-tomcat8-adapter-dist:$project.ext.keycloakAdapterVersion@zip" } task unzipKeycloak(type: Copy) { def zipPath = project.configurations.compile.find {it.name.startsWith("keycloak") } println zipPath def zipFile = file(zipPath) def outputDir = file("${buildDir}/tomcat/lib") from zipTree(zipFile) into outputDir }