我正在尝试改进我们的构建过程,这是一个巨大的Ant build.xml,它调用其他ant构建文件并执行几个Java类来执行更复杂的逻辑,这些逻辑在Ant中是不可能/可怕的.
背景:
Java和Ant的经验,一些Groovy
Windows平台
目标:
作为命令行cron和servlet发布时的组合运行
尽可能简化,最少的语言和技术之间的弹跳
我需要像Java这样的语言提供更高级别的逻辑能力,而Ant非常简单,我们使用过滤来覆盖不同客户端的默认属性文件.大多数情况下,我想知道人们使用的是Ant/Java以外的东西.
除了你提到的Ant和苦涩的make/autotools,主流工具是:
使用SCons
果酱
CMake的
Maven的
我使用SCons,因为它基于python,资金充足且优雅.Jam似乎是最实用的.我不太了解CMake.Maven可能是您的选择,因为它以Java为中心,比Ant更高级.
您可以在维基百科找到更多内容:内置工具列表
如果你追求Maven,那么你将遇到两个问题:复杂的构建和学习Maven的f**#ing"魔法".Maven只会使问题变得更糟,因为它是钝的,过于复杂.
我在一家大型财富500强公司继承了传统的Maven 1.x版本.近年来,我在许多其他项目中选择使用Maven 2.x. 我对Maestro进行了评估,希望它可以让Maven易于处理.我的结论,就像许多其他人一样(检查'网),Maven是朝着错误方向迈出的一大步.它绝对不是Ant的改进.
我已经使用Ant多年了,包括编写一个大型的Ant帮助脚本开源库.我也广泛使用它的.NET堂兄nAnt.但是,Ant有两个主要的缺点.其一,XML根本不是做构建任务的正确位置.二,Ant和XML不能很好地扩展到大型复杂的构建.事实上,我在这里写了很多关于我在那个舞台上(和Maven)的经历.
行业领导者已经得出结论,构建只是另一个应用程序,应该使用通用应用程序工具来处理.但是,由于它涉及系统级和跨平台功能,因此大多数开发语言/平台都不适合(包括Java,因此包括Ant和Maven).这也排除了.NET.
我花了两年时间寻找替代方案,我找到了它:Python.它具有系统级访问,跨平台可移植性,简单性,可读性,功能,稳健性和成熟度的正确组合.SCons,buildbot,setuptools/easyinstall和基础Python是我目前构建过程的目标平台.必要时,与Ant,Maven和任何其他此类工具的集成很容易.同时,我可以将这些工具用于任何具有任何源语言的平台上的任何构建的核心.没有更多的障碍,没有更多疯狂的复杂性,没有更多据说有用的"声明性"脚本,没有更多的黑盒f @*#ing"魔术".
如果你不能切换到Python,那么试试Ant + Ivy(在apache.org).它为您提供了Maven的酷存储库,而没有Maven的大部分邪恶.这也是我正在做的,必要和适当的.
最好的祝愿.