2010-04-30 28 views

risposta

40

Se il file è di tipo Maven, è possibile utilizzare lo Maven Dependency Plugin con un obiettivo get.

Per qualsiasi file, è possibile utilizzare il plug-in Antrun per chiamare Ant's Get task.

Un'altra opzione sarebbe il maven-download-plugin, è stato creato appositamente per facilitare questo tipo di cose. Non è stato sviluppato molto attivamente e la documentazione menziona solo un obiettivo artifact che fa esattamente la stessa cosa di dependency:getma .. Se si guardano le fonti, si vedrà che c'è un mojo WGet che farà il lavoro.

usare in questo modo in ogni 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> 

I principali vantaggi di questo plugin sono la memorizzazione nella cache del download e il controllo nei confronti di una firma, come MD5.

Si noti che questa risposta è stata pesantemente aggiornata per riflettere le modifiche nel plug-in come indicato nei commenti.

+2

+1 E 'anche possibile controllare MD5 sum ad esempio: 3921c19528d180902939b9f4c9ac92f1

+0

In realtà 'outputDirectory' non' targetDirectory'. Si prega di aggiornare la risposta ...Questo mi ha confuso per un po 'perché per i test ho copiato e incollato il tuo XML direttamente e ho solo modificato i valori ... – Kidburla

+4

Avanti veloce al 2017: questa risposta è un po' datata; 'maven-download-plugin' è stato rinominato (artifactId) in' download-maven-plugin'. È incluso in Maven Central e sicuramente non è necessario fare svn checkout :) Ecco il link al repository github ufficiale con esempio di utilizzo: https://github.com/maven-download-plugin/maven-download-plugin#wget -goal –

21

Sembra che wagon-maven-plugin da CodeHaus consente di scaricare file su HTTP (anche se questo non è l'obiettivo originale).

Ecco un esempio il download di zip GlassFish prima i test di integrazione:

<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

Memorizza i file nel repository locale come maven-download-plugin? –

13

Il Maven-antrun-plugin è una soluzione più diretta:

<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

Non so se è la versione del plug-in che ho usato o cosa, ma nel tag se ho usato non è successo nulla, ma quando l'ho modificato in il ha iniziato a funzionare. Esempi qui aiutati: https://maven.apache.org/guides/mini/guide-using-ant.html – Hardy

+0

Sta succedendo qualcosa di davvero strano. Al termine del download, mi aspettavo un file all'interno della directory dei download. Ma il risultato è che "download" viene creato come un file con la stessa estensione del file scaricato. E quando apro questo file "download", hai trovato anche un unico file chiamato "download". – Dherik

12

mi piacerebbe aggiungere una cosa poco circa il download-Maven-plugin:

  • progetto è ora ospitato su GitHub https://github.com/maven-download-plugin/maven-download-plugin
  • Le sue versioni sono disponibili su Maven Central e gli SNAPSHOT sono disponibili sul repository istantanea oss.sonatype.org
  • Rispetto ad altri suggerimenti menzionati qui, il download-maven-plugin aggiunge la seguente caratteristica interessante: il caching dei file (per evitare sempre il download ripetuto di file di grandi dimensioni) e la verifica della firma per assicurarsi che il download abbia i bit giusti.
+0

Un plugin di quale app esattamente? Eclisse? e perché un plugin invece di uno stand-alone? –

+0

Un plugin per Maven. Clicca sul link e leggi README con esempi. – Mickael

+0

Aspetta, quindi scarica Maven, e poi un plugin per Maven chiamato anche "Maven"? –

0

Se disponibile, wget può essere utilizzato direttamente 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

Questo è possibile solo se wget è disponibile sulla macchina su cui è in esecuzione Maven. Ad esempio se si esegue su Windows, wget non sarà disponibile. – Kidburla

0

È possibile utilizzare l'obiettivo download-single nel plugin wagon. Ecco un esempio per scaricare una pagina HTML (si noti che l'URL devono essere diviso in un URL "directory" e un "nome del file")

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