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

时间:2010-08-20 06:57:19

标签: maven-2 build-process maven

我想知道人们使用或不使用Maven的原因。我们即将把我们所有的构建切换到Maven 2,并且不需要太多使用它。

使用Maven 2有哪些优点/缺点,例如:

  • 你为什么要切换到maven?
  • 你为什么把maven扔掉并使用 别的什么?
  • 出了什么问题 为你解决?
  • 出了什么问题 对你有用吗?

谢谢!

6 个答案:

答案 0 :(得分:11)

我在过去4年左右遇到的每个项目中都使用过maven,从私人迷你项目到大型企业数十个模块项目,我从来没有后悔使用过maven。

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

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

继续打击它,但在你发明更好的东西之前,我会继续使用它。

答案 1 :(得分:6)

Maven太棒了!

我没有足够的时间来抒情抒情,但这里是Maven的几个好处,没有特别的顺序:

  • 可重复构建:如果您可以构建项目,您的同事将始终能够在他们的计算机上。它也可以在构建服务器上重复。
  • 构建系统的标准化:低估Maven的新开发人员将立即知道如何构建,发布,测试等,从而消除了大量的学习开销。
  • 专注于自动化:Maven让您了解自动化软件开发过程的思维方式。
  • 约定优于配置:无需设置或构建工件所需的最小配置。
  • 依赖关系管理:Maven将为您解决和管理您的依赖关系。
  • 测试:在项目生命周期中运行测试和集成测试的能力。
  • 插件:有数千个插件可以执行各种任务。只需在POM中添加引用即可轻松配置它们。

就缺点而言,人们常说最好接受Maven默认值和约定,最好在绿地项目开始时使用它。如果您想节省在POM中配置XML的时间,我同意这个程度。

我不是真正的工具狂热者,但是在Maven之前使用了Make和Ant,我真的看不到采用Maven的一个缺点。这是一个高质量的工具和实时节省。

答案 2 :(得分:4)

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

存储库管理器是免费提供的,我建议安装以下其中一项:

  • Nexus
  • Artifactory
  • Archiva

好消息是,您不必使用Maven构建代码,以便充分利用拥有Maven基础架构的好处。

我推荐Maven参加“绿色领域”项目而没有遗产来保卫。项目的开始通常是引入新技术的最佳时机,并且使用Maven的好处已有详细记录。高亮灯是标准化的构建过程和丰富的第三方插件。

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

最后,ivy已嵌入到其他构建工具中。示例包括Gradlesimple-build-tool等新构建工具以及Grails等开发系统。因此,请使用Enterprise Maven存储库,并选择适合项目团队的构建工具。

答案 3 :(得分:4)

到目前为止,我不喜欢它。 当我使用maven时,项目的构建时间会急剧增加。从日食到几秒到一秒,即使是最简单的maven项目也要超过30秒。

鉴于有这么多人喜欢它,我必须做错事,但到目前为止我似乎无法弄清楚为什么建立一个基于maven的项目需要很长时间。

答案 4 :(得分:1)

我从maven开始,我坚持下去。当我用maven构建一个项目时,我从来没有丢失库,错误的库版本,......它编译,它运行的问题。

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

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

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

答案 5 :(得分:0)

我同意马克认为这对绿地项目来说非常棒。在开发环境中启动并运行会有一些开销,但这非常值得。

我可能会补充一点,使用Maven的潜在危险在于,如果您正在处理大型项目,那么维护存储库中的jar可能会变得很困难。您最终可能会在POM.xml中使用几种不同版本的jar。

与任何项目一样,请确保您有适当的政策和程序,以便将不同的Jars引入您的代码库。这些jar可以具有不同的许可证,可能会将您的代码库暴露给开源世界。确保您的。{/ p>审核这些许可证