Ant依赖管理

时间:2009-07-07 11:31:28

标签: ant

似乎蚂蚁依赖管理至少可以说不好......但是,有希望吗? 今天有更好的构建或项目管理选择,如maven,常春藤,但我坚持使用一堆依赖于彼此的蚂蚁项目,所以我想知道是否存在管理依赖项的“蚂蚁最佳实践”。

特别是在我的情况下,我有:

w.war

a.jar
b.jar
c.jar

w.war是我部署到Web服务器的war文件。在war文件中我使用a.jar。 a.jar取决于b.jar,所以我很乐意将b.jar包装成w ...这样就好了...... 当b.jar依赖于c.jar时,问题就开始了。 a.jar的作者知道它对b.jar的依赖性,因此它可以将b.jar打包到w.war中,但它不知道b.jar对c.jar的依赖性。此外,b.jar的作者以后可以添加更多依赖项,例如“b.jar依赖于e.jar”,因此a.jar的作者在他们加起来时没有机会跟踪这些依赖项。

我想要的是定义“a取决于b”和“b取决于c”(在不同的build.xml文件中)并使用ant magic将它们全部编译到w.war中。 那可能吗?如果没有,是否有最佳实践?

我就是这样 - 接近只是改写就是在maven中,但这是很多工作......对蚂蚁有希望吗?

5 个答案:

答案 0 :(得分:17)

如果您已经使用过Ant,那么最好的办法就是使用Ivy进行依赖管理。

http://ant.apache.org/ivy/

它为依赖项操作提供了丰富的ant任务。

答案 1 :(得分:3)

只是让你失望:依赖管理与构建系统相结合很难!除非你有一个非常简单的例子,否则这不是一件容易的事情,你将不得不投入一些工作。

如果您想要或必须使用Ant,Ivy绝对是一个不错的选择。作为Ant的官方子项目,它集成得相对顺利。

答案 2 :(得分:2)

过去4年我一直在使用Ivy(在加入Apache之前的方式)并且没有任何遗憾。

在不了解您的Ant文件的情况下,给出确定的答案有点困难,但我想这些项目是一次性构建的。这意味着他们无法将工件(或jar文件)单独发布到中央存储库中。

解决方案是同时使用中央(对于公共库)和本地(对于您的项目)存储库。您可以查看我的公共项目,尤其是ivysettings.xml文件,因为它们正是使用了这个原则。

答案 3 :(得分:0)

这是我的看法:使用两全其美:Maven仅用于依赖,而Ant用于日常构建繁重的工作:

Why you should use the Maven Ant Tasks instead of Maven or Ivy

答案 4 :(得分:0)

有一个新的Java开源构建系统,名为EBuildfeatures),它是Ant / Ivy的一个很好的替代品,因为它特别擅长依赖管理。

网站上有deficiencies of AntMaven的详细文章。