Maven 在理论和实践上做了什么? 什么时候值得使用它?

我准备开始一个 Java 项目,只是为了练习。我读过关于 Maven 的文章,但我实际上不明白它什么时候应该被使用。

你能给我一些实际的建议吗? Maven 帮了我很多吗? Maven 实际上为我的项目做了什么?

107933 次浏览

来自 Sonatype Doc:

这个问题的答案取决于你自己的观点 大多数 Maven 用户将称 Maven 为“构建工具”: 工具 用于从源代码构建可部署的工件 而项目经理可能会把 Maven 称为更多的东西 综合的: 一个项目管理工具。有什么区别 像 Ant 这样的构建工具只专注于预处理, 编译、包装、测试和发行。一个项目 管理工具(如 Maven)提供了在 除了提供构建功能之外,Maven 还可以 还可以运行报告,生成网站,并促进交流 在一个工作小组的成员之间。

我强烈建议您查看 Sonatype 文档,花一些时间查看可用的插件,以了解 Maven 的强大功能。

非常简单地说,它在比(比如) Ant 更高的概念层次上运行。使用 Ant,您可以指定要构建的文件和资源集,然后指定如何将它们混合在一起,并指定应该发生在(clean/edit/jar)中的顺序。对于 Maven 来说,这一切都是不言而喻的。Maven 希望在特定的地方找到您的文件,并且将自动使用这些文件。因此,用 Maven 建立一个项目可以简单得多,但是你必须遵守 Maven 的规则!

Maven是一个构建工具。与 AntGradle一起构建的还有 Java工具。
如果你是 Java 的新手,那么只要使用 IDE 编译就可以了,因为 Maven有一个陡峭的学习曲线。

它的作用

Maven 是一个“构建管理工具”,它用于定义你的 .java文件如何编译成 .class,打包成 .jar(或 .war.ear)文件,(预/后)用工具处理,管理你的 CLASSPATH,以及所有其他类型的任务,需要建立你的项目。它类似于 C/C + + 中的 阿帕奇蚂蚁格拉德尔或者 档案,但是它试图完全自包含在其中,你不需要任何额外的工具或者脚本,通过合并其他常见的任务,比如下载和安装必要的库等。

它也是围绕“构建可移植性”这一主题设计的,这样你就不会因为在一台计算机上使用相同的代码而在另一台计算机上使用相同的构建脚本而产生问题(这是一个众所周知的问题,我们有 Windows 98机器的虚拟机,因为我们无法在其他任何地方编译我们的一些 Delphi 应用程序)。正因为如此,它也是在使用不同 IDE 的人之间进行项目工作的最佳方式,因为 IDE 生成的 Ant 脚本很难导入到其他 IDE 中,但是现在所有的 IDE 都理解并支持 Maven (情报日食NetBeans)。即使您最终不喜欢 Maven,它也会成为所有其他现代构建工具的参考点。

你为什么要用它

关于 Maven 有三件事是 非常不错的。

  1. Maven 将(在您声明正在使用的库之后)自动下载您使用的所有 还有库以及 他们为您使用的库。这非常好,使得处理大量库变得异常简单。这样可以避免 “依赖地狱”。它类似于 ApacheAnt 的 艾薇

  2. 它使用“ 约定优于配置”,所以默认情况下,您不需要定义您想要执行的任务。您不需要像在 Ant 或 Makefile 中那样编写“编译”、“测试”、“包”或“清理”步骤。只要把文件放在 Maven 希望它们出现的地方,它就会立刻工作起来。

  3. Maven 还有许多很好的插件,您可以安装它们来处理从 使用 JAXB 从 XSD 模式生成 Java 类用 Cobertura 测量测试覆盖率的许多常规任务。只要将它们添加到您的 pom.xml,它们就会与您想要做的其他事情集成在一起。

最初的学习曲线是陡峭的,但是(几乎)每个专业的 Java 开发人员都使用 Maven 或者希望他们这样做。你应该在每个项目中使用 Maven,尽管如果你需要一段时间来适应它,并且有时候你希望你可以手动做事情,因为学习新的东西有时候会伤害到你,不要感到惊讶。但是,一旦您真正习惯了 Maven,您会发现构建管理几乎不需要花费任何时间。

如何开始

最好从“ 五分钟后到玛文”开始。它会让你开始一个项目,为你准备好代码与所有必要的文件和文件夹设置(是的,我建议使用快速启动原型,至少在第一)。

在您开始之后,您将希望更好地理解该工具将如何使用。因为“ 与 Maven 一起更好地构建”是理解其工作原理的最彻底的地方,然而,“ Maven: The Complete Reference”是最新的。阅读第一篇以便理解,然后用第二篇作为参考。