似乎蚂蚁依赖管理至少可以说不好......但是,有希望吗? 今天有更好的构建或项目管理选择,如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中,但这是很多工作......对蚂蚁有希望吗?
答案 0 :(得分:17)
答案 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开源构建系统,名为EBuild(features),它是Ant / Ivy的一个很好的替代品,因为它特别擅长依赖管理。
网站上有deficiencies of Ant和Maven的详细文章。