Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于复杂的构建过程,您使用什么?_Java_Ant_Build Process - Fatal编程技术网

Java 对于复杂的构建过程,您使用什么?

Java 对于复杂的构建过程,您使用什么?,java,ant,build-process,Java,Ant,Build Process,我正在尝试修改我们的构建过程,它目前是一个巨大的Ant build.xml,它调用其他Ant构建文件并执行几个Java类,以执行更复杂的逻辑,而在Ant中尝试这些逻辑是不可能/可怕的 背景: 有Java和Ant方面的经验,有些Groovy方面的经验 Windows平台 目标: 作为命令行cron和servlet发布到时的组合运行 尽可能的简化,最少的语言和技术之间的跳跃 我需要像Java和Ant这样的语言提供的更高级别的逻辑能力,我们使用过滤来覆盖不同客户端的默认属性文件。大多数情况下,

我正在尝试修改我们的构建过程,它目前是一个巨大的Ant build.xml,它调用其他Ant构建文件并执行几个Java类,以执行更复杂的逻辑,而在Ant中尝试这些逻辑是不可能/可怕的

背景:

  • 有Java和Ant方面的经验,有些Groovy方面的经验
  • Windows平台
目标:

  • 作为命令行cron和servlet发布到时的组合运行
  • 尽可能的简化,最少的语言和技术之间的跳跃

我需要像Java和Ant这样的语言提供的更高级别的逻辑能力,我们使用过滤来覆盖不同客户端的默认属性文件。大多数情况下,我想知道人们使用的是不是Ant/Java以外的东西。

我喜欢使用,因为你可以在需要时依靠整个语言及其框架库的强大功能。

我使用Ant,充分利用它的优势。若您以一致的方式布局项目,则可以通过编写宏来消除大量重复

我一直在构建一个包含宏和自定义任务的数据库,我可以在多个项目中重用这些宏和自定义任务


或者,有些人以Maven起誓。其他人只是咒骂Maven。

除了你提到的Ant和scarry make/autotools之外,主流工具是:

我使用SCON,因为它是基于python的、资金充足且优雅的。 果酱似乎是最实用的一种。 我对CMake了解不多。 Maven可能是您的选择,因为它以Java为中心,比Ant更高级

您可以在维基百科上找到更多信息:

还可以查看


虽然像SCons这样的通用构建系统功能非常强大,但与专门为构建Java项目而定制的系统相比,Java支持有些有限。

我使用Maven,不仅仅是为了构建,我还使用他们的release/dist插件

在一对命令中,我可以拥有源代码控制中用于构建、打包和发布的代码

发布插件处理版本号的更新,dist处理如何将所有内容放在一起并压缩

与Maven相比,Ant看起来很难。当然,Maven有一个学习曲线,但是阅读pom.xml要比阅读build.xml容易得多


Maven不需要太冗长。

我喜欢Ant,但前提是您需要花时间编写自己的Java插件来封装复杂的操作。这并不难,但不幸的是,大多数人试图用XML编写他们的逻辑,而不是ant contrib之类的东西。我认为这是一个巨大的错误

我听说过关于rake和groovy工具的好东西(在另一篇评论中提到),但我没有使用它们的经验

如果您试图将生命周期中的几个步骤编写在一起,那么最好使用基于流程自动化的构建服务器,如AnthillPro(Cruise、BuildForge和Electric Commander是该领域的其他服务器)

问这类问题的另一个地方是。是一个关于持续集成和测试的会议,相关的邮件列表已经变成了一个围绕这类主题的非常棒的社区


(我是CITCON的组织者,但我是一名热爱工作的人,而不是一名盈利者。它确实有一个非常有用的邮件列表。如果我是为了钱而拉皮条的话,那将是.-)

如果你追求Maven,那么你将面临两个问题:复杂的构建和学习Maven的“魔力”。Maven只是让问题变得更糟,因为它是迟钝和过于复杂的

我在财富500强的一家大公司继承了传统的Maven 1.x版本。近年来,我选择在许多其他项目上使用Maven 2.x。我对迈斯特罗进行了评估,希望它能让马文变得容易驯服。我的结论和其他许多人一样,是Maven朝着错误的方向迈出了一大步。这绝对不是对Ant的改进

我已经使用Ant很多年了,包括编写一个大型的Ant-helper脚本开源库。我还广泛使用了它的.NET表亲nAnt。然而,Ant有两大缺点。首先,XML根本不是执行构建任务的合适位置。第二,Ant和XML不能很好地扩展到大型复杂的构建。事实上,我在这里写了很多关于我在这个领域(和Maven)的经历

行业领导者已经得出结论,构建只是另一个应用程序,应该使用通用的应用程序工具来实现。然而,由于它涉及系统级和跨平台功能,大多数开发语言/平台都不适合(包括Java,因此包括Ant和Maven)。这也不包括.NET

我花了两年时间寻找另一种选择,我发现了它:Python。它具有系统级访问、跨平台可移植性、简单性、可读性、强大功能、健壮性和成熟性的正确组合。SCons、buildbot、setuptools/easyinstall和基本Python是我当前构建过程的目标平台。必要时,与Ant、Maven和任何其他此类工具的集成都很容易。同时,我可以将这些工具用于任何平台上任何源语言的任何构建的核心。没有更多的障碍,没有更多疯狂的复杂性,没有更多据说有用的“声明式”脚本,没有更多的黑箱操作“魔法”

如果你不能切换到Python,那么试试Ant+Ivy(在apache.org上)。它提供了Maven的酷库,没有Maven的大部分缺点。在必要和合适的情况下,我也在这样做


最美好的祝愿。

我们使用luntbuild。这是一个非常容易使用的web应用程序。它将从CVS/SVN签出,自动增加版本/构建号,在ant脚本中执行构建任务,并用新版本标记存储库。可以安排自动构建,让it通过IM向您发送电子邮件或与您联系,也可以使用secur