根据我的少量经验,我只使用Ant作为构建工具。还有其他更好的项目,为什么?
答案 0 :(得分:22)
它比ant要好得多,因为对于大多数常见任务,您不必编写复杂的build.xml,maven具有非常好的默认值,并且它都是配置的约定。
它还有一个很大的库中央存储库,并且很容易将其配置为“使用最新的稳定公共资源 - 无论如何”。 Maven将为您下载最新的稳定版本(不再在罐子中检入VCS),如果发布了新的上游稳定版本,它也会下载它。当然,如果需要,将它锁定到某个特定版本也同样容易。
它也与Netbeans和Eclipse(m2eclipse插件)很好地集成,因此IDE尊重您在pom.xml文件中声明的任何设置(包括依赖项)。
maven还有一些缺点:一些插件的文档记录很差,与两个IDE的集成并不是很完美,而且以不同的方式,一些错误消息可能难以理解。
答案 1 :(得分:11)
Ant仍然是一个主要的角色。根据我的经验,它占主导地位。此外,通过Ivy,它可以处理Maven的一些优势。 IMO,Ant将成为其他工具的框架:XML过于严格(参见下面的链接)。
Maven 2也是一个主要参与者。我知道那些非常喜欢它的人,并且批评Maven 1的批评是真的(它已经走了很长的路)。
Groovy在构建空间中提供了一些很酷的东西,因为它们构建在Ant上。 Gant用于Grails,但可以包含在Gradle中。这些也可以用于Java。
冒着拉扯自己博客的风险,here is a post关于Gant和Gradle。以下是very current debate关于未来的链接。
答案 2 :(得分:5)
然后,再次,如果你想要一些maven的功能,蚂蚁人有常春藤(http://ant.apache.org/ivy/)的依赖性功能。
如果您想继续使用ant,请抓住第2版“ANT IN ACTION”,以便您可以使用ant来获得最佳效率。
祝你好运,答案 3 :(得分:4)
有些人喜欢Ivy,这是一个依赖管理Ant的东西,所以我想来自Ant背景的人会喜欢它。
其他像Buildr。这是一个JRuby的东西,所以如果你可以在相同的项目中兼顾Ruby和Java,那么我认为它会很有趣。
就个人而言,我只使用Maven。很容易创建一个默认的pom.xml文件,并拥有所有构建命令。当项目增长时,您已经拥有了运行插件和添加依赖项的基础架构。
答案 4 :(得分:4)
您还有Gant。 Gant是Groovy + Ant,你可以用普通的groovy编写你的任务,你也可以调用任何ant任务。如果你是一个Java商店并希望重用你拥有但不喜欢XML的蚂蚁技能,我推荐Gant,它很容易设置,你可以将它嵌入ant(并且还可以从ant中调用gant)。
答案 5 :(得分:1)
我非常喜欢SCons,这是一个构建工具,其配置文件都只是Python脚本。这将吸引任何了解Python或类似脚本语言的人。 SCons旨在与Java以及C / C ++和其他语言一起使用,我过去对它非常满意。
因为SCons文件是用Python编写的,所以如果你发现自己需要做任何特殊的事情,你可以编写任意Python代码。但是,如果您对Python完全不熟悉,那么学习曲线可能会比尝试扩展Ant或类似的东西有更高的学习曲线。
答案 6 :(得分:1)
Maven2似乎是即将发生的事情。
对于我们的项目,我们会尽可能地迁移回ant。
Maven2需要相当多的知识来完全按照你想要的方式获得它,而Maven2版本似乎以不同的方式处理类路径。
检查可能被吸引的依赖项依赖项中包含的所有许可证是一件痛苦的事。
可能启动时间较慢,因为您需要自己弄清楚依赖关系,但至少它很容易阅读。这里没有魔法:)
如果您确实使用了maven,请考虑像Nexus这样的内部存储库。这样,如果某些图书馆决定离开网络,你的软件就不会死了。
*我们被maven1焚烧了; ibiblio maven1存储库重定向,maven1不支持重定向:(
答案 7 :(得分:0)
我建议您在考虑使用正确的工具时先考虑您的要求。每个项目都不同,您使用的工具应该反映问题空间而不是时尚。
话虽这么说,我认为对于一般用途来说,ant仍然可能是构建java应用程序的最佳通用工具。它通常可以与其他工具一起用于依赖关系管理,但是我们再次避开了解决方案。
非常好的消息是,如果你的流程很好,那么切换构建工具是一个相当轻松的过程 - 教训 - 从一个与手头问题相关的良好流程开始。
答案 8 :(得分:0)
您会在What are some good java make utilities?找到一些答案。