我可以在maven生命周期中从http下载一些文件吗?任何插件?
答案 0 :(得分:50)
如果文件是Maven依赖项,则可以使用Maven Dependency Plugin目标的get
。
对于任何文件,您可以使用Antrun插件调用Ant的Get task。
另一种选择是maven-download-plugin,它是为了促进这种事情而精确创建的。它并没有非常积极地开发,文档只提到artifact
目标与dependency:get
完全相同但是...... 如果你看一下这些来源,你会看到这是一个WGet mojo,可以完成这项工作。
在任何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>
此插件的主要优点是缓存下载和检查签名,例如MD5。
请注意,此答案已经过大量更新,以反映插件中的更改,如评论中所述。
答案 1 :(得分:24)
似乎来自CodeHaus的wagon-maven-plugin允许通过HTTP下载文件(虽然这不是原始目标)。
以下是集成测试前下载GlassFish zip的示例:
<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>
答案 2 :(得分:17)
maven-antrun-plugin是一个更直接的解决方案:
<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>
答案 3 :(得分:13)
我想添加一些关于download-maven-plugin的内容:
答案 4 :(得分:0)
如果可用,wget可以直接用于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>
答案 5 :(得分:0)
您可以使用download-single
插件中的wagon
目标。下面是一个下载HTML页面的示例(请注意,URL必须拆分为“目录”URL和“文件名”)
<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>