2010-04-30 203 views

回答

40

如果該文件是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。

請注意,此答案已大量更新以反映插件中的變化,如註釋中所述。

+2

+1也可以檢查MD5校驗例如: 3921c19528d180902939b9f4c9ac92f1 2014-03-17 19:57:01

+0

實際上'outputDirectory'不是'targetDirectory'。請更新您的答案...這讓我感到困惑了一段時間,因爲測試時我直接複製和粘貼你的XML,只改變了值... – Kidburla 2016-11-03 19:37:35

+4

快進到2017年:這個答案有點過時; 'maven-download-plugin'被重命名爲(artifactId)爲'download-maven-plugin'。它包含在maven central中,你絕對不需要做svn checkout :)下面是使用例子的官方github repo的鏈接:https://github.com/maven-download-plugin/maven-download-plugin#wget -goal – 2017-01-12 10:56:09

21

看起來像CodeHaus的wagon-maven-plugin允許通過HTTP下載文件(雖然這不是最初的目標)。

下面是一個例子下載前集成測試的GlassFish拉鍊:

<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> 
+1

它是否像maven-download-plugin一樣緩存本地存儲庫中的文件? – 2014-01-13 12:45:29

13

的Maven的antrun-插件是一個更直接的解決方案:

<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> 
+1

我不知道它是我使用的插件的版本還是什麼,但是在標記中,如果我使用了什麼都沒有發生,但是當我將它更改爲時,開始工作。這裏的例子有所幫助:https://maven.apache.org/guides/mini/guide-using-ant.html – Hardy 2016-04-15 22:02:11

+0

真正奇怪的事情正在發生。下載完成後,我期待在下載目錄中有一個文件。但結果是「下載」被創建爲具有與下載文件相同的擴展名的文件。當我打開這個「下載」文件時,你也發現了一個名爲「下載」的獨特文件。 – Dherik 2017-11-28 16:14:04

12

我想補充一些東西關於下載maven-plugin:

  • 項目現在託管在GitHub https://github.com/maven-download-plugin/maven-download-plugin
  • 它的發行版在Maven Central上可用,並且SNAPSHOTs可在oss.sonatype.org快照庫中獲得
  • 與此處提到的其他建議相比,download-maven-plugin添加了以下有趣功能:緩存文件避免總是重新下載大文件)和簽名驗證,以確保下載得到正確的位。
+0

其中的應用程序的插件是什麼?蝕?爲什麼插件而不是獨立? – 2014-10-01 08:41:33

+0

Maven的插件。點擊關於鏈接的鏈接,查看README的例子。 – Mickael 2014-10-01 09:34:15

+0

等等,所以你下載maven,然後插入一個名爲「maven」的maven插件呢? – 2014-10-01 09:58:19

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> 
+0

這隻有在Maven運行的機器上有wget本身時纔可以使用。例如,如果在Windows上運行,wget將不可用。 – Kidburla 2016-11-01 18:33:05

0

可以在wagon插件使用download-single目標。下面是下載一個HTML頁面的例子(注意,該網址已經在一個「目錄」的網址和一個「文件名」被拆分)

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