¿Puedo descargar algunos archivos de http mientras maven lifecycle? cualquier complemento?Maven: descargar archivos de la url
Respuesta
Si el archivo es una dependencia de Maven, puede usar el Maven Dependency Plugin que tiene un objetivo de get
.
Para cualquier archivo, puede usar el complemento Antrun para llamar a Ant's Get task.
Otra opción sería maven-download-plugin, se ha creado precisamente para facilitar este tipo de cosas. No se desarrolla muy activamente y la documentación solo menciona un objetivo artifact
que hace exactamente lo mismo que dependency:get
pero ... Si mira las fuentes, verá que tiene un mojo WGet que hará el trabajo.
utilizar de esta manera, en cualquier POM:
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<!-- the wget goal actually binds itself to this phase by default -->
<phase>process-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>http://url/to/some/file</url>
<outputFileName>foo.bar</outputFileName>
<!-- default target location, just to demonstrate the parameter -->
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
beneficios clave de este plugin son el almacenamiento en caché de la descarga y comprobando una firma, como MD5.
Tenga en cuenta que esta respuesta se ha actualizado en gran medida para reflejar los cambios en el complemento tal como se indica en los comentarios.
Parece que wagon-maven-plugin de CodeHaus permite descargar archivos a través de HTTP (aunque este no es el objetivo original).
Aquí se muestra un ejemplo de descargar GlassFish postal antes de las pruebas de integración:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>download-glassfish</id>
<phase>pre-integration-test</phase>
<goals>
<goal>download-single</goal>
</goals>
<configuration>
<url>http://download.java.net</url>
<fromFile>glassfish/3.1/release/glassfish-3.1.zip</fromFile>
<toDir>${project.build.directory}/glassfish</toDir>
</configuration>
</execution>
</executions>
</plugin>
¿Almacena en caché los archivos en el repositorio local como maven-download-plugin? –
El experto-antRun-plugin es una solución más directa:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>download-files</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- download file -->
<get src="http://url/to/some/file"
dest="${project.build.directory}/downloads/"
verbose="false"
usetimestamp="true"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
No sé si es la versión del complemento que utilicé o qué, pero en la etiqueta
Algo realmente extraño está sucediendo. Cuando se completa la descarga, esperaba un archivo dentro del directorio de descargas. Pero el resultado es que "descargas" se crea como un archivo con la misma extensión del archivo descargado. Y cuando abro este archivo de "descargas", encontraste un archivo único llamado "descargas" también. – Dherik
Me gustaría añadir una cosa unos pocos acerca de la descarga-maven-plugin:
- proyecto está alojado en GitHub https://github.com/maven-download-plugin/maven-download-plugin
- Sus lanzamientos están disponibles en Maven Central, y las SNAPSHOT están disponibles en el repositorio de instantáneas oss.sonatype.org
- Comparado con otras sugerencias mencionadas aquí, el complemento download-maven agrega la siguiente característica interesante: almacenamiento en caché de archivos (para evitar siempre volver a descargar grandes archivos) y la verificación de firmas para asegurarse de que la descarga tenga los bits correctos.
¿Un complemento de qué aplicación exactamente? ¿Eclipse? y por qué un plugin en lugar de un standAlone? –
Un complemento para Maven. Haga clic en el enlace y vea README con ejemplos. – Mickael
Espera, ¿así que descargas maven, y luego un plugin para maven que también se llama "maven"? –
Si está disponible, wget puede usarse directamente con exec-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>wget</executable>
<arguments>
<argument>http://example.com/file.zip</argument>
<argument>destination.zip</argument>
</arguments>
</configuration>
</plugin>
Esto solo es posible si wget está disponible en la máquina donde está funcionando Maven. Por ejemplo, si se ejecuta en Windows, wget no estará disponible. – Kidburla
Usted puede utilizar el objetivo download-single
en el wagon
plugin. Este es un ejemplo para descargar una página HTML (nótese que la URL que se han dividido en una url "directorio" y un "nombre de archivo")
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals><goal>download-single</goal></goals>
<configuration>
<url>http://www.mojohaus.org/wagon-maven-plugin</url>
<fromFile>download-single-mojo.html</fromFile>
<toFile>[my dir]/mojo-help.html</toFile>
</configuration>
</execution>
</executions>
</plugin>
- 1. descargar archivos de URL usando ASP clásico
- 2. Usando Maven para descargar JAR
- 3. Uso de Java para descargar archivos desde una URL HTTPS
- 4. m2eclipse suele descargar artefactos Maven
- 5. Descargar archivos binarios con problemas de archivos
- 6. Descargar el archivo url de datos
- 7. Descargar/Transmitir archivo desde la URL - asp.net
- 8. Maven usa el repositorio incorrecto para descargar
- 9. Descargar archivos del servidor php
- 10. Descargar la imagen de la URL usando el código php?
- 11. ¿Cómo simplemente descargar un JAR usando Maven?
- 12. Descargar archivo de URL a una cadena
- 13. Cómo descargar frascos de Maven Central sin escribir ningún pom.xml
- 14. Maven: descargar artefacto y sus deps a un directorio específico
- 15. descargar archivos utilizando Java Mail
- 16. ¿Cómo descargar fuentes para un jar con Maven?
- 17. ¿Descargar archivos cargados con getScript?
- 18. descargar imágenes automáticamente desde cualquier ubicación URL
- 19. descargar archivos Paperclip como postal
- 20. Descargar archivo Curl con url var
- 21. ¿Cómo forzar a Maven a descargar maven-metadata.xml del repositorio central?
- 22. ¿Cómo descargar la versión de SNAPSHOT desde el repositorio de maven SNAPSHOT?
- 23. Múltiples archivos pom.xml maven
- 24. ¿Cómo usar Maven pom para descargar archivos jar solo a un directorio específico?
- 25. ¿Cómo puedo descargar artefactos de Maven dentro de un complemento?
- 26. Creación de archivos .dmg personalizados al descargar
- 27. una forma más rápida de descargar varios archivos
- 28. cómo descargar google appengine (cargado) archivos de la aplicación
- 29. ¿Cómo descargar varios archivos en VB6 con barra de progreso?
- 30. ¿Por qué maven 2 intenta descargar dependencias que ya tengo?
+1 También es posible comprobar MD5 suma por ejemplo: 3921c19528d180902939b9f4c9ac92f1 –
En realidad es 'outputDirectory' not' targetDirectory'. Por favor actualice su respuesta ...Esto me confundió por un tiempo porque para las pruebas copié y pegué tu XML directamente y solo cambié los valores ... – Kidburla
Avance rápido hasta 2017: esta respuesta está un poco pasada de moda; 'maven-download-plugin' se renombró (artifactId) a' download-maven-plugin'. Está incluido en maven central y definitivamente no necesitas hacer svn checkout :) Aquí está el enlace al repositorio oficial de github con el ejemplo de uso: https://github.com/maven-download-plugin/maven-download-plugin#wget -goal –