如何使用Ant和Ivy构建项目及其依赖项

时间:2010-02-18 15:41:50

标签: java ant build-automation ivy

我有一个带有两个依赖项的WebApp,如下所示。我想使用Ant + Ivy构建一个用于在Tomcat上部署的war文件。

+
+-MyWebApp // this Dynamic Java Web Application (deployed Tomcat and launches
           // a thread contained in MyApp) 
+-MyApp // this is just a vanilla Java Application
+-MyCommonStuff // these are common classes shared between MyApp and MyWebApp
                // Ex. Database access code & business classes

使用Ant文档我已经研究了如何为每个项目创建适当的build.xml文件。 换句话说,每个项目都有一个独立的build.xml,所以为了构建整个项目,我所要做的就是:

mkdir build
cd build
export SOME_COMMONBASE=`pwd`
svn co https://mybuildmachine.lan/svn/mycommonstuff mycommonstuff
cd mycommonstuff
ant
cd ..
% this produces mycommonstuff.jar
svn co https://mybuildmachine.lan/svn/myapp myapp
cd myapp
ant
cd ..
% this produces myapp.jar
svn co https://mybuildmachine.lan/svn/mywebapp mywebapp
cd mycommonstuff
ant
cd ..
% this produces mywebapp.war and deploys it to Tomcat

现在我想做的就是把它们放在一起,这样我就可以开始构建一个版本。表面上看起来我应该能够以某种方式创建一个Ivy build.xml,它将依赖关系连接在一起。但是,我已经阅读了常春藤文档和Googled示例,但我仍然不知道如何完成这项任务。 有人可以给我一些关于如何做到这一点的指示吗?

1 个答案:

答案 0 :(得分:0)

您要做的是使用Ivy's Ant tasks进行布线。那里有很多更精细的细节,但基本上你需要你自己的Ivy存储库,然后只需在那里发布你自己的项目工件就可以在其他地方使用它们。

对于JAR库项目:

  • 使用ivy:retrieve获取依赖项,以便您可以将项目构建到库中。
  • 使用ivy:publish将构建的JAR发布到您自己的Ivy存储库中。

对于WAR项目:

  • 再次使用ivy:retrieve获取依赖项,以便将项目构建到WAR中。

至于其他部分,Ant本身有许多任务可以帮助你,然后由其他人提供一些任务,例如svn task by tigris用于从SVN获取源,而Ant's optional SCP task用于将WAR文件传输到外部服务器。