2010-04-30 23 views

Respuesta

40

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:getpero ... 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.

+2

+1 También es posible comprobar MD5 suma por ejemplo: 3921c19528d180902939b9f4c9ac92f1

+0

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

+4

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 –

21

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> 
+1

¿Almacena en caché los archivos en el repositorio local como maven-download-plugin? –

13

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> 
+1

No sé si es la versión del complemento que utilicé o qué, pero en la etiqueta si usé no pasó nada, pero cuando lo cambié a , el comenzó a funcionar. Los ejemplos aquí ayudaron: https://maven.apache.org/guides/mini/guide-using-ant.html – Hardy

+0

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

12

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.
+0

¿Un complemento de qué aplicación exactamente? ¿Eclipse? y por qué un plugin en lugar de un standAlone? –

+0

Un complemento para Maven. Haga clic en el enlace y vea README con ejemplos. – Mickael

+0

Espera, ¿así que descargas maven, y luego un plugin para maven que también se llama "maven"? –

0

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> 
+0

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

0

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> 
Cuestiones relacionadas