使用Maven有什么优点/缺点?

问题描述:

我想知道人们使用或不使用Maven的原因。我们即将把我们所有的构建切换到Maven 2,并且不需要太多的经验。使用Maven有什么优点/缺点?

什么是使用Maven 2,这样的东西的优点/缺点:

  • 你为什么要切换到Maven?
  • 你为什么把maven扔掉,并用 别的东西?
  • 是什么问题 为您解决?
  • 是什么问题 对您有何影响?

谢谢!

我在过去4年左右遇到的每个项目中都使用过maven,从私人小型项目到大型企业几十个模块项目,我从未后悔过使用maven。

我从标准的java JAR/WAR/EAR项目到Flex/AIR应用程序和Linux RPM使用maven构建任何东西,当没有maven插件可用于给定情况时,委托给AntrunGMaven

标准maven生命周期的强大功能和舒适性,结合大量可用的代码生成插件,文档,代码度量等等,这些通常都很容易使用,这使得maven成为java构建系统的唯一真正选择。

继续前进吧,但是直到你发明更好的东西,我会继续使用它。

+0

我完全同意。使用polyglot maven,您甚至不需要再使用xml,这在我看来是maven的一个缺点。对于复杂的项目,POM很快变得非常大。另一方面,如果您使用的是像m2eclipse提供的编辑器那样的pom编辑器,那么无论如何您都不必直接处理大多数情况。尽管如此,polyglot maven规则:) – 2010-08-20 19:26:12

我开始与maven,我留下来。当我使用maven构建项目时,我从来没有遇到缺失库,错误的库版本等问题,它编译运行。

库升级很简单(不像Ant)。

Maven提供了许多有用的插件。我使用maven在hudson上运行功能测试 - 它下载我的项目的最新版本,启动嵌入式数据库,注入dbunit数据集,在jetty上部署应用程序,运行测试,呈现测试结果。

我不喜欢的一件事是在一个文件中包含所有内容。然后我想指定配置不仅使用XML。

使用Maven的巨大优势是其存储库基础结构。这促进了共享第三方库的标准协议,并使团队能够更有效地进行协作,而不必强制将所有内容都检入到相同的源代码库(模块化版本)中。

仓库管理人员都是免费的,我建议你安装下列之一:

  • 的Nexus
  • Artifactory的
  • Archiva

的好消息是,你不*使用Maven构建代码,以便获得拥有Maven基础架构的好处。

我推荐Maven用于“绿色领域”项目,无需传统捍卫。项目的开始通常是引入新技术的最佳时间,使用Maven的好处已有详细记录。高灯是一个标准化的构建过程和丰富的第三方插件。

ANT项目可以重新设计为与使用Maven的团队互操作。正确应用的ivy插件实际上可以简化ANT构建过程。 Ivy能够通过从Maven存储库下载依赖关系并随后发布构建工件来管理项目的类路径(就像Maven的“部署”一样)。

最后ivy已被嵌入到其他构建工具中。示例是新建工具,如Gradle,simple-build-tool和开发系统,如Grails。因此,请使用Enterprise Maven存储库并选择适用于项目团队的构建工具。

我同意马克对绿地项目的好处。在您的开发环境中启动并运行它需要一些开销,但它非常值得。

我可能会补充说,使用Maven的潜在危险是,如果您正在处理大型项目,则可能难以在存储库中维护JAR。您可能最终会在您的POM.xml中使用几个不同版本的jar。

与任何项目一样,确保您有适当的政策和程序来将不同的Jars引入您的代码库。这些罐子可以有不同的许可证,可能会将您的代码库暴露给开源世界。确保您的许可证已经过审核。

+0

Maven解决了一个特定的问题,那就是在没有任何依赖管理的情况下有效执行依赖关系管理,或者与Ivy有一个相似之处。就个人而言,对于大型多项目工作计划,迟早你必须看看有效的POM_,这就是我发现Maven变得难以管理或难以管理的地方......除非你从一开始就受到纪律处分。这就是为什么从_that_角度来看,Gradle对用户更友好,不会因为后者的核心优势而取消Maven,而且在复杂性方面更易于管理。它虽然取决于你。 – Beezer 2016-03-03 15:51:44

Maven太棒了!

我没有太多的时间来抒发我想,但这里是我的前的Maven的一些好处,没有特定的顺序:

  • 重复构建:如果你可以建立项目,你的同事将永远能够在他们的机器上。它也可以在构建服务器上重复使用。
  • 构建系统的标准化:新的开发人员不知道Maven会立即知道如何构建,发布,测试等,消除大量的学习开销。
  • 专注于自动化:Maven让您置身于软件开发过程自动化流程的思维中。
  • 约定优于配置:不需要安装程序或构建工件所需的最低配置。
  • 依赖管理:Maven将为您解决和管理您的依赖关系。
  • 测试:作为项目生命周期的一部分运行测试和集成测试的能力。
  • 插件:有数千个插件可以执行各种任务。只需在POM中添加一个参考即可轻松完成配置。

就缺点而言,通常认为您最好接受Maven的默认值和约定,并且最好在新建项目开始时使用它。如果您想节省在您的POM中配置XML的时间,我会同意这一点。

我并不是一个真正的工具*者,但是在Maven之前使用过Make和Ant,我真的无法看到采用Maven的一个缺点。这是一款高质量的工具和实时节电器。

到目前为止,我不喜欢它。 当我使用maven时,项目的构建时间急剧增加。从日食到几秒钟,甚至到最简单的Maven项目,花费超过30秒。

鉴于如此多的人喜欢它,我一定在做错了什么,但到目前为止我似乎无法弄清楚为什么要花时间来构建一个基于maven的项目。