web-dev-qa-db-ja.com

Maven:URLからファイルをダウンロードする

Mavenのライフサイクル中にhttpからいくつかのファイルをダウンロードできますか?プラグインはありますか?

50
Jin Kwon

ファイルが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などの署名に対するチェックです。

この回答は、コメントに記載されているようにプラグインの変更を反映するために大幅に更新されていることに注意してください。

52
Pascal Thivent

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

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

Download-maven-pluginについていくつか追加したいことがあります。

  • プロジェクトはGitHubでホストされるようになりました https://github.com/maven-download-plugin/maven-download-plugin
  • そのリリースはMaven Centralで入手でき、スナップショットはoss.sonatype.orgスナップショットリポジトリで入手できます
  • ここで言及した他の提案と比較して、download-maven-pluginは次の興味深い機能を追加します:ファイルのキャッシュ(常に大きなファイルを再ダウンロードすることを避けるため)およびダウンロードが適切なビットであることを確認するための署名検証。
14
Mickael

可能な場合、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>
0
fracz

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>
0
César García