Posso scaricare alcuni file da http durante il ciclo di vita di Maven? qualche plugin?Maven: download di file dall'URL
risposta
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:get
ma .. 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.
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>
Memorizza i file nel repository locale come maven-download-plugin? –
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>
Non so se è la versione del plug-in che ho usato o cosa, ma nel tag
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
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.
Un plugin di quale app esattamente? Eclisse? e perché un plugin invece di uno stand-alone? –
Un plugin per Maven. Clicca sul link e leggi README con esempi. – Mickael
Aspetta, quindi scarica Maven, e poi un plugin per Maven chiamato anche "Maven"? –
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>
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
È 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>
- 1. Download paralleli di artefatti Maven
- 2. file download di file cakephp
- 3. Download file di robot
- 4. I download di Maven hanno .lastUpdated come estensione
- 5. Download del file con download parziale (HTTP)
- 6. Download di file con Java
- 7. Download di file su Android
- 8. Download file - lunghezza file negativa
- 9. Download file completo callback
- 10. file video download issue
- 11. http download file name
- 12. Download file asincrono SSH.Net
- 13. Loopback Download file
- 14. FtpWebRequest Download File
- 15. Download File - VB6
- 16. Download file binario
- 17. Download file di bootstrap di Twitter
- 18. Prestazioni di download di file multithreading Java
- 19. Download di file dal loopback di Strongloop
- 20. JMeter - Caricamento file e scenario download file
- 21. file Download .xlsx utilizzando Response.TransmitFile()
- 22. HTTP Download file molto grande
- 23. .msg file dà download error
- 24. Codeigniter Forza download dei file
- 25. Download file JQuery con Ajax
- 26. forza download file con laravel
- 27. Download completo del file di tracciamento
- 28. Android download problemi di file binari
- 29. Download di file da DataURL in JavaScript
- 30. Download di file su SSH utilizzando Python
+1 E 'anche possibile controllare MD5 sum ad esempio: 3921c19528d180902939b9f4c9ac92f1 –
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
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 –