Mavenのライフサイクル中にhttpからいくつかのファイルをダウンロードできますか?プラグインはありますか?
ファイルがMaven依存関係の場合、 get
ゴールを持つ Maven Dependency Plugin を使用できます。
anyファイルの場合、Antrunプラグインを使用して、Antの Get task を呼び出すことができます。
別のオプションは maven-download-plugin で、この種のことを容易にするために正確に作成されています。それはあまり積極的に開発されておらず、ドキュメントにはdependency:get
とまったく同じことを行うartifact
の目標のみが記載されていますが、..ソースを見ると、仕事をする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などの署名に対するチェックです。
この回答は、コメントに記載されているようにプラグインの変更を反映するために大幅に更新されていることに注意してください。
wagon-maven-plugin のように思えますが、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と「ファイル名」に分割する必要があることに注意してください)
<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>