根据我的少量经验,我只使用Ant作为构建工具。还有其他更好的项目,为什么?

有帮助吗?

解决方案

Maven

它比ant要好得多,因为对于大多数常见任务,您不必编写复杂的build.xml,maven具有非常好的默认值,并且它都是配置的约定。

它还有一个很大的库中央存储库,很容易配置它,比如,<!>使用最新的稳定公共资源 - 无论<!>引用它。 Maven将为您下载最新的稳定版本(不再在罐子中检入VCS),如果发布了新的上游稳定版本,它也会下载它。当然,如果需要,将它锁定到某个特定版本也同样容易。

它也与Netbeans和Eclipse(m2eclipse插件)很好地集成,因此IDE尊重您在pom.xml文件中声明的任何设置(包括依赖项)。

maven还有一些缺点:一些插件的文档记录很差,与两个IDE的集成并不是很完美,而且以不同的方式,一些错误消息可能难以理解。

其他提示

Ant仍然是一个主要的角色。根据我的经验,它占主导地位。此外,通过Ivy,它可以处理Maven的一些优势。 IMO,Ant将成为其他工具的框架:XML过于严格(参见下面的链接)。

Maven 2也是一个主要参与者。我知道那些非常喜欢它的人,并且批评Maven 1的批评是真的(它已经走了很长的路)。

Groovy在构建空间中提供了一些很酷的东西,因为它们构建在Ant上。 Gant用于Grails,但可以包含在Gradle中。这些也可以用于Java。

冒着拉扯自己博客的风险,这是关于Gant和Gradle的帖子。以下是关于他们未来的最新辩论的链接。

在企业中,蚂蚁仍然是顽固的玩家。依赖关系不会快速改变。与不断迁移到相当最新版本的依赖jar的开源项目不同,MOST企业不会过快地更改其依赖关系。鉴于此,与蚂蚁相比,maven的优势并不太多。

然后,如果你想要一些maven的功能,蚂蚁人有常春藤( http:// ant。 apache.org/ivy/ )依赖项功能。

如果您想继续使用ant,请抓住<!>“ANT IN ACTION <!>”,第2版,以便您可以使用ant来获得最佳效率。

祝你好运,

有些人喜欢常春藤,这是一个依赖管理Ant的东西,所以我想人们来自Ant背景会喜欢它。

其他如 Buildr 。这是一个JRuby的东西,所以如果你可以在相同的项目中兼顾Ruby和Java,那么我认为它会很有趣。

就个人而言,我只使用 Maven 。很容易创建一个默认的pom.xml文件,并拥有所有构建命令。当项目增长时,您已经拥有了运行插件和添加依赖项的基础架构。

您还有 Gant 。 Gant是Groovy + Ant,你可以用普通的groovy编写你的任务,你也可以调用任何ant任务。如果你是一个Java商店并希望重用你拥有但不喜欢XML的蚂蚁技能,我推荐Gant,它很容易设置,你可以将它嵌入ant(并且还可以从ant中调用gant)。

我非常喜欢 SCons ,这是一个构建工具,其配置文件都只是Python脚本。这将吸引任何了解Python或类似脚本语言的人。 SCons旨在与Java以及C / C ++和其他语言一起使用,我过去对它非常满意。

因为SCons文件是用Python编写的,所以如果你发现自己需要做任何特殊的事情,你可以编写任意Python代码。但是,如果您对Python完全不熟悉,那么学习曲线可能会比尝试扩展Ant或类似的东西有更高的学习曲线。

Maven2似乎是即将发生的事情。

对于我们的项目,我们会尽可能地迁移回ant。

Maven2需要相当多的知识来完全按照你想要的方式获得它,而Maven2版本似乎以不同的方式处理类路径。

检查可能被吸引的依赖项依赖项中包含的所有许可证是一件痛苦的事。

可能启动时间较慢,因为您需要自己弄清楚依赖关系,但至少它很容易阅读。这里没有魔法:)

如果您确实使用了maven,请考虑像Nexus这样的内部存储库。这样,如果某些图书馆决定离开网络,你的软件就不会死了。

*我们被maven1焚烧了; ibiblio maven1存储库重定向,maven1不支持重定向:(

我建议您在考虑使用正确的工具时先考虑您的要求。每个项目都不同,您使用的工具应该反映问题空间而不是时尚。

话虽这么说,我认为对于一般用途来说,ant仍然可能是构建java应用程序的最佳通用工具。它通常可以与其他工具一起用于依赖关系管理,但是我们再次避开了解决方案。

非常好的消息是,如果你的流程很好,那么切换构建工具是一个相当轻松的过程 - 教训 - 从一个适合手头问题的良好流程开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top