2009-10-13 50 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设置。