我可以从 http 下载一些文件,而梅文生命周期? 任何插件?
如果该文件是 Maven 依赖项,则可以使用具有 get目标的 Maven Dependency Plugin Maven 依赖插件。
get
对于 任何文件,可以使用 Antrun 插件调用 Ant 的 接任务。
另一个选择是 Maven-download-plugin,它正是为了方便这类事情而创建的。它的开发不是很活跃,文档中只提到了一个 artifact目标,它的功能与 dependency:get 但是。完全相同。如果查看源代码,您会发现它有一个 WGet mojo 来完成这项工作。
artifact
dependency:get
在任何 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。
请注意,这个答案已经被大量更新,以反映插件中的变化,如评论中所述。
似乎来自 CodeHaus 的 旅行车专家插件允许通过 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>
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>
我想添加一些关于 download-maven-plugin 的东西:
如果可用,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>
您可以在 wagon插件中使用 download-single目标。下面是一个下载 HTML 页面的示例(注意,URL 必须分为“目录”URL 和“文件名”)
wagon
download-single
<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>