2009-10-13 44 views
2

一個FTP服務器,我有一個項目分成幾個子模塊(每個人都jar庫):部署的組件使用Maven 2

myapp 
    myapp-commons 
    myapp-client 
    myapp-server 

我已經配置了我的pom.xml爲了創造3組件(client.zip,oracle.tar.gzserver.tar.gz),最終存儲在myapp/target目錄中。 我現在想要的是將其中兩個(oracle.tar.gzserver.tar.gz)分發到使用FTP的服務器。

即使我還沒有嘗試,我知道我可以很容易地使用我的pom.xml中的一些Ant行,但我不太喜歡這個選項(我只會在解決我的問題時使用Ant沒有其他解決方案)。 有一些SO問題(herehere)爲此提供瞭解決方案。

我的問題是要知道是否有更好的方法來做到這一點?我知道Wagon Maven2插件,但我沒有成功配置它來部署組件(並且創建了JAR創建的而不是)。

回答

2

正如您在您的問題中所說的,Ant方法並不理想,但如果您沒有找到替代方案,this answer會顯示如何使用antrun插件來使用FTP進行部署。

更新,根據您更新的問題,這部分不太相關,我會留下來幫助別人。

wagon-ftp plugin允許您連接到FTP服務器。我沒有嘗試過,但是你可以將部署插件的deploy-file goal綁定到適當的階段,以便將文件傳遞到FTP服務器(在this blog處使用一些提示)。

+0

+1 for wagon-ftp。 – 2009-10-13 10:41:06

+0

對不起,我在我的問題中說「貨」,但其實我的意思是「貨車」; o) – romaintaz 2009-10-13 12:52:31

2

部署使用FTP文物的方式被記錄在Deployment of artifacts with FTP

爲了部署使用FTP 文物必須先指定的 你的POM的 distributionManagement元素的使用 FTP服務器以及指定 擴展您的構建元素 將在與FTP部署所需的FTP文物 拉:

... 

    <!-- Enabling the use of FTP --> 
    <distributionManagement> 
    <repository> 
    <id>ftp-repository</id> 
    <url>ftp://repository.mycompany.com/repository</url> 
    </repository> 
    </distributionManagement> 

    <build> 
    <extensions> 
     <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-ftp</artifactId> 
     <version>1.0-alpha-6</version> 
     </extension> 
    </extensions> 
    </build> 

settings.xml將包含其中,該元素的id匹配的POM上面指定的FTP庫的id一個server元素:

<settings> 

    ... 

    <servers> 
    <server> 
     <id>ftp-repository</id> 
     <username>user</username> 
     <password>pass</password> 
    </server> 

    </servers> 

    ... 

</settings> 

現在,我的理解是,你要使用這樣的設置只有生產的組件的一個子集。爲此,我會創建一個專用模塊來生成要使用FTP分發的程序集,並且只會覆蓋distributionManagement元素,並且僅在此模塊中使用FTP設置。