【发布时间】:2011-04-01 12:32:45
【问题描述】:
我想知道人们使用或不使用 Maven 的原因。我们即将将所有构建切换到 Maven 2,并且不需要太多经验。
使用 Maven 2 有哪些优点/缺点,例如:
- 为什么切换到 maven?
- 你为什么把 maven 扔掉并使用 别的东西?
- 出了什么问题 为你解决?
- 出了什么问题 对你有什么影响?
谢谢!
【问题讨论】:
标签: maven-2 build-process maven
我想知道人们使用或不使用 Maven 的原因。我们即将将所有构建切换到 Maven 2,并且不需要太多经验。
使用 Maven 2 有哪些优点/缺点,例如:
谢谢!
【问题讨论】:
标签: maven-2 build-process maven
我从 maven 开始,并一直使用它。当我使用 maven 构建项目时,我从来没有遇到过缺少库、错误库版本等问题……它可以编译,它可以运行。
库升级很简单(不像 Ant)。
Maven 提供了许多有用的插件。我使用 maven 在 hudson 上运行功能测试 - 它下载我的项目的最新版本,启动嵌入式数据库,注入 dbunit 数据集,在码头上部署应用程序,运行测试,呈现测试结果。
我不喜欢的一件事是将所有内容都放在一个文件中。然后我想指定配置不仅使用 XML。
【讨论】:
到目前为止,我不喜欢它。 当我使用 Maven 时,项目的构建时间会急剧增加。从 Eclipse 的几毫秒到一秒,即使是最简单的 maven 项目也超过 30 秒。
鉴于这么多人喜欢它,我一定是做错了什么,但到目前为止,我似乎无法弄清楚为什么构建一个基于 maven 的项目需要很长时间。
【讨论】:
Maven 太棒了!
我没有太多时间来抒情,但以下是我对 Maven 的几大好处,排名不分先后:
就缺点而言,人们常说最好接受 Maven 的默认设置和约定,最好在刚开始的项目开始时就开始使用它。如果您想节省在 POM 中配置 XML 的时间,我会在一定程度上同意这一点。
我并不是一个真正的工具*者,但在 Maven 之前使用过 Make 和 Ant,我真的看不出采用 Maven 有什么缺点。这是一个高质量的工具和一个实时的节省。
【讨论】:
使用 Maven 的最大优势在于它的存储库基础架构。这促进了共享 3 方库的标准协议,并使团队能够更有效地协作,而不必将所有内容都签入同一源代码存储库(模块化构建)。
存储库管理器是免费提供的,我建议安装以下之一:
好消息是,您不必为了充分利用 Maven 基础架构的好处而使用 Maven 构建代码。
我推荐 Maven 用于没有遗产可保护的“绿地”项目。项目的开始通常是引入新技术的最佳时机,使用 Maven 的好处是有据可查的。亮点是标准化的构建过程和丰富的第 3 方插件。
可以重新设计 ANT 项目以与使用 Maven 的团队进行互操作。正确应用的ivy 插件实际上可以简化ANT 构建过程。 Ivy 能够通过从 Maven 存储库下载依赖项并随后发布构建工件来管理项目的类路径(就像 Maven “部署”一样)。
最后ivy 被嵌入到其他构建工具中。例如Gradle、simple-build-tool 等新构建工具和Grails 等开发系统。因此,欢迎使用 Enterprise Maven 存储库并选择适合项目团队的构建工具。
【讨论】:
我同意 Mark 的观点,它非常适合新建项目。在您的开发环境中启动和运行它需要一些开销,但非常值得。
我可能会补充一点,使用 Maven 的一个潜在危险是,如果您正在处理一个大型项目,则可能难以维护存储库中的 jar。您最终可能会在 POM.xml 中使用多个不同版本的 jar。
与任何项目一样,请确保您制定了良好的政策和程序,以便将不同的 Jars 引入您的代码库。这些 jar 可以有不同的许可证,可能会将您的代码库暴露给开源世界。确保这些许可证已由您审核。
【讨论】:
在过去 4 年左右的时间里,我在遇到的每个项目中都使用过 maven,从私人小型项目到大型企业数十个模块的项目,我从未后悔过使用 maven。
我已经使用 maven 构建了从标准 java JAR / WAR / EAR 项目到 flex / AIR 应用程序和 Linux RPM 的任何东西,当没有适用于给定情况的 maven 插件时,委托给 Antrun 或 GMaven。
标准 maven 生命周期的强大功能和舒适性与用于代码生成、文档、代码度量等的大量可用插件相结合,这些插件通常都很容易使用,这使得 maven 成为 Java 构建系统的唯一真正选择。
继续抨击它,但在你发明更好的东西之前,我会继续使用它。
【讨论】: