根据我的少量经验,我只使用 Ant 作为构建工具。还有其他更好的项目吗,为什么?
9 回答
它比 ant 好得多,因为对于大多数常见任务,您不必编写复杂的 build.xml,maven 具有非常好的默认值,并且都是约定优于配置。
它还有一个大型的库中央存储库,并且很容易将其配置为“使用最新的稳定公共资源”。然后,Maven 将为您下载最新的稳定版本(不再将 jar 签入 VCS),如果发布了新的上游稳定版本,它也会下载它。当然,如果您需要,也可以很容易地将其锁定到某个特定版本。
它还与 Netbeans 和 Eclipse(m2eclipse 插件)很好地集成,因此 IDE 支持您在 pom.xml 文件中声明的任何设置(包括依赖项)。
maven 也有一些缺点:一些插件的文档记录很差,与两个 IDE 的集成并不是很完美,而且在不同的方面,一些错误消息可能难以理解。
蚂蚁仍然是主要参与者。根据我的经验,它占主导地位。另外,借助 Ivy,它可以处理 Maven 的一些优势。IMO,Ant 将成为其他工具的框架:XML 太死板(见下面的链接)。
Maven 2 也是一个主要参与者。我认识一些人,他们非常喜欢它,并对 Maven 1 的正确批评感到愤怒(它已经走了很长一段路)。
Groovy 在构建空间中提供了一些很酷的东西,因为它们构建在 Ant 之上。Gant 在 Grails 中使用,但可能包含在 Gradle 中。这些也可以用于 Java。
冒着对我自己的博客进行拉皮条的风险,这里有一篇关于 Gant 和 Gradle 的文章。这是关于他们未来的当前辩论的链接。
在企业中,蚂蚁仍然是盘踞者。依赖关系不会快速变化。与不断迁移到相当最新版本的依赖 jar 的开源项目不同,大多数企业尽量不要太快地更改它们的依赖关系。鉴于此,与 ant 相比,maven 的优势并不算多。
再说一次,如果你想要一些 maven 的特性,ant 的人有 ivy ( http://ant.apache.org/ivy/ ) 的依赖特性。
如果您想继续使用 ant,请获取“ANT IN ACTION”,第 2 版,以便您可以使用 ant 获得最佳生产力。
祝你好运,
你也有甘特。Gant 是 Groovy + Ant,你可以用普通的 groovy 编写任务,也可以调用任何 ant 任务。如果你是一个 Java 商店,想重用你拥有的 ant 技能但不喜欢 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 应用程序的最佳通用工具。它通常与其他依赖管理工具一起有效地使用,但我们再次绕过解决方案而没有问题。
好消息是,如果您的过程很好,切换构建工具是一个相当轻松的过程 - 课程 - 从一个适合手头问题的良好过程开始。