2009-02-06 37 views
11

我正在尝试修改我们的构建过程,该过程当前是一个巨大的Ant build.xml,它调用其他ant构建文件并执行几个Java类来执行更复杂的逻辑,这些在Ant中是不可能/可怕的。你在复杂的构建过程中使用什么?

背景:在Java和蚂蚁

  • 经验,一些Groovy的
  • Windows平台

目标:

  • 运行命令行的cron的组合和当servlet发布到
  • as simplifi编越好,最少的语言和科技股

我需要一个像Java语言提供和Ant是非常容易的,我们使用的过滤覆盖默认的属性文件,为不同的客户更高层次的逻辑电源之间弹跳。大多数情况下,我想知道是否有其他人使用的Ant/Java以外的东西。

+2

只是跑,跑了尖叫.....约乌鸦 – Skizz 2009-02-06 17:00:11

回答

8

除了你提到的蚂蚁和斯卡里化妆/自动工具,主流的工具有:

我使用SCons,就因为它基于Python,资金和优雅。 果酱似乎是最实用的一个。我不太了解CMake。 Maven可能是您的选择,因为它是以Java为中心的,比Ant更高的级别。

更多,你可以在维基百科找到:List of built tools

+0

Maven绝对是一个不错的选择。 – 2009-02-06 17:58:28

+2

@马克·戴维森:Maven是只是一个不错的选择,直到你已经尝试了复杂的构建了一会,了解Maven的阴暗面,然后还要用另一种工具开始。 Maven会让你哭泣,尖叫,并为任何不平凡的事情疯狂。 – 2009-02-06 18:02:46

+1

Gradle看起来像一个非常有趣的人。我喜欢它提供脚本以及maven/ivy集成的事实 – 2010-06-18 22:09:08

3

我喜欢使用Rake,因为您可以重新使用整个Ruby语言的功能,并且在需要时它是框架库。

+0

什么? :) – rkj 2009-07-22 12:17:50

3

我使用Ant,利用它的macro feature。如果您使用一致的mannner布局项目,则可以通过编写宏来消除大量重复项目。

我一直在构建一个Antlib,其中包含可在多个项目中重复使用的宏和自定义任务。

另外,有些人发誓Maven。其他人只是发誓Maven。

4

而且看看

虽然更通用的构建系统,如使用SCons是非常强大的,与专门为构建Java项目而定制的系统相比,Java支持有一定的局限性CTS。

2

我使用Maven,不只是为了构建,我也使用他们的release/dist插件。

在一对命令中,我可以使用源代码控制中的代码来构建,打包和发布。

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

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

Maven需要远不那么冗长。

1

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

我听说过关于耙子和groovy工具的好东西(在另一个评论中提到过),但我没有经验与他们。

如果您试图在生命周期中将几个步骤一起编写脚本,您最好使用基于流程自动化的构建服务器,如AnthillPro(Cruise,BuildForge和Electric-Commander是此空间中的其他人)。

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

(我是CITCON的组织者,但是爱劳动不是盈利壶。它确实有一个真正有用的邮件列表。如果我是拉皮条的东西的钱那将是The CI Guys。;-))

7

如果你追求Maven,那么你将会遇到两个问题:复杂的构建和学习Maven的魔法。 Maven让问题变得更糟,因为它很笨拙,过于复杂。

我在一家大型财富500强公司继承了遗留的Maven 1.x版本。近年来,我在许多其他项目中选择使用Maven 2.x。我评估了Maestro,希望它能让Maven变得轻松。我的结论与许多其他人一样(查看'网络')是Maven向错误方向迈出的一大步。它绝对不是对Ant的改进。

我已经使用了Ant很多年,包括编写一个大型的Ant助手脚本的开源库。我也广泛地使用了它的.NET表弟nAnt。但是,蚂蚁有两个主要的缺陷。其一,XML根本就不是做构建任务的好地方。二,Ant和XML不能很好地扩展到庞大复杂的版本。事实上,我在这里写了很多关于我在这个领域的经验(和Maven)。

行业领导者认为构建只是另一个应用程序,应该使用常规应用程序工具来处理。但是,由于它涉及系统级和跨平台功能,大多数开发语言/平台并不适合(包括Java,因此也包括Ant和Maven)。这也排除了.NET。

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

如果您无法切换到Python,请尝试Ant + Ivy(位于apache.org)。它为您提供了Maven的酷库,没有大部分Maven的恶果。这就是我所做的,在必要和适合的情况下。

祝福。

+0

我发现Maven也是如此。非常复杂,大量的学习曲线,大量的MAGIC。 我已经结束了在Groovy,但主要是出于与Java熟悉和使用Ant无缝集成。我没有使用过Python,但听说过好东西。 – fooMonster 2009-04-29 18:10:57

0

我们使用luntbuild。这是一个非常易于使用的网络应用程序。它将从CVS/SVN中检出,自动增加版本/内部版本号,在ant脚本中执行构建任务并使用新版本标记您的存储库。可以安排自动构建,通过电子邮件发送给您或通过即时消息与您联系,也具有安全性和构建依赖性。

我们仍在使用1.2.3版本,但是我看到它高达1.6.0。它只是工作。

http://luntbuild.javaforge.com/

编辑:重读你的问题,我现在看到你正在寻找的东西来代替蚂蚁。在我们的例子中,Ant并不是一个真正的问题。我们在Netbeans中设置了项目,它使用Ant来构建,我们只需要在Netbeans提供的现有脚本中实现一些钩子,这很容易实现。

编辑:看起来像你可以从Groovy调用Ant。这很好,因为那样你可以重新使用Ant已经存在的所有任务。

http://groovy.codehaus.org/Using+Ant+from+Groovy

0

我用耙无处不在,我可以。在需要构建Java代码的地方,您可以使用jruby,或者看看如下所示:buildr

1

自从您构建Java后,坚持使用Ant。我为某些JNI工作混合了Ant/SCons,但总的来说,我会留在Ant中,特别是因为你已经有了Ant中的现有构建设置。移植到Maven将会像穿过没有洞的墙的方形钉子一样。

拥抱您的自定义Java逻辑,并考虑编写适当的Ant任务,而不是执行外部Java代码。我解决了构建过程中一些非常复杂的部分,只需简单地扩展Ant来完成我所需要的工作,例如。管理图标资源的大型GUI项目或注入颠覆信息直接信息的jar清单(谢谢SVNKit)

0

尝试FinalBuilder

它提供了一个GUI界面,无论你的构建过程可能是,有将近本地行动一切,再加上你可以创建自己的动作工作室。

随着一点规划可以非常精简。

1

我会在一周的任何一天与蚂蚁一起去。

这并不完美; XML非常冗长,并且几乎不可能实现任何逻辑,但即使是团队中最初级的工程师也至少可以了解蚂蚁文件在一天内的工作内容。

复杂的逻辑可以重构使用Java和集成在蚂蚁,如果你愿意。蚂蚁给你所有的java的力量:)

无论你使用什么系统,依赖解析是困难的。使用ant时,最好的解决方案似乎是存储所有jar的lib目录,或者在构建时从库中复制库的内部Web服务器。

我也有一些Maven 1和Maven 2的经验。这种经历让我感觉Maven对于爱好项目来说很棒,但是随着时间的推移可能会出现复杂的软件需求。

我看到Maven的两个重要问题:

  • 导入使用Maven可能没有你知道它随时间而改变,从而导致奇怪的问题,任何依赖。
  • 您导入导入直接使用Maven的不仅是软件的许可,而且通过其间接导入

总之库使用的许可证,我不喜欢的是,构建依赖于时间的事实它开始了。在生产版本发布一年后生成bug修复版本时,这可能是一个真正的问题。

这些问题当然可以管理(可能使用nexus代理),但在重建构建系统之前需要考虑这些问题。在我的公司,我们决定将Ant用于所有新项目,并尝试将maven 1和2移植到蚂蚁身上。保持它的工作太困难了。

我的建议是,如果你和你的团队知道如何处理蚂蚁,尝试重构你的蚂蚁文件,不要跳上其他的构建工具。只需要很长时间才能把它做好。时间你可以花钱赚钱,并作为一家公司生存:)

0

我不得不添加到这些解决方案,我发现我不能没有......它叫Hudson。它只需要几秒钟的时间来设置,通常你可以逃脱现有的ANT文件已经做的大部分。

此外,Hudson提供了一种以任何人都可以下载的方式“构建”,执行测试用例和生成“工件”(例如构建产品)的好方法。

它很难捕捉到它可以为你做的所有事情......所以试试吧......你不会失望的。

0

Maven非常适合做大型构建...在大多数情况下,它不起作用非常简单。人们误解了Maven的概念。如果你正在使用“maven方式”,你将会得到更小的模块,从而为你提供更好的软件体系结构。另一方面,Hudson会通过使用Maven来支持您减少构建时间,因为Hudson支持仅构建其他构建工具不支持的已更改模块。与Maven的问题是学习和了解的Maven的概念,例如一个项目(文件夹等)的结构或者只有一个神器等构建周期会支持你在不同的领域:编译,打包,部署和发布它不被其他工具的支持(仅当您的手实现它...我已经写了许多大型Ant脚本来达到这一点)......像随时间变化的其他问题正在引起忽略了最佳实践和针指向使用的版本。

-1

我使用的主要是蚂蚁,但Maven是也是一个很好的工具。用蚂蚁你可以做任何你想做的事。

在我们公司,我们创建了一个通用的蚂蚁建设者,做了很多事情:构建,Compess图像缩小,生成文档,包文件。它是开源的,我们是开放的改善。你可以在这里得到它:

https://github.com/edertone/TurboBuilder

相关问题