165

我即将开始一个 Java 项目只是为了练习。我已经阅读了有关 Maven 的信息,但我实际上并不了解它应该在什么时候使用。

你能给我一些实用的技巧吗?Maven 有很大帮助吗?Maven 实际上为我的项目做了什么?

4

3 回答 3

192

它能做什么

Maven 是一个“构建管理工具”,它用于定义您的.java文件如何编译.class、打包到.jar(或.war.ear)文件、使用工具(前/后)处理、管理您的CLASSPATH以及所有其他类型的任务构建你的项目。它类似于C/C++ 中的Apache AntGradleMakefiles,但它试图完全独立于其中,通过合并其他常见任务(如下载和安装必要的库等),您不需要任何额外的工具或脚本。

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

为什么你应该使用它

关于 Maven,有三件事非常好。

  1. Maven 将(在您声明您正在使用哪些库之后)自动下载您使用的所有库以及它们为您使用的库。这非常好,并且使处理大量库变得非常容易。这可以让您避免“依赖地狱”。它类似于 Apache Ant 的Ivy

  2. 它使用“约定优于配置”,因此默认情况下您不需要定义要执行的任务。您不需要像在 Ant 或 Makefile 中那样编写“编译”、“测试”、“打包”或“清理”步骤。只需将文件放在 Maven 期望它们的位置,它应该可以立即工作。

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

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

如何开始

最好的起点是“ Maven in 5 Minutes ”。它会让您从一个项目开始,您可以使用所有必要的文件和文件夹设置来编写代码(是的,我建议至少在开始时使用快速入门原型)。

开始之后,您将希望更好地了解该工具的用途。因为“使用 Maven 更好地构建”是了解其工作原理的最彻底的地方,但是,“ Maven:完整参考”是最新的。阅读第一个理解,然后使用第二个作为参考。

于 2012-11-11T21:03:53.090 回答
10

来自Sonatype 文档

这个问题的答案取决于你自己的观点。绝大多数 Maven 用户会称 Maven 为“构建工具”:一种用于从源代码构建可部署工件的工具。构建工程师和项目经理可能将 Maven 称为更全面的东西:项目管理工具。有什么区别?像 Ant 这样的构建工具只专注于预处理、编译、打包、测试和分发。诸如 Maven 之类的项目管理工具提供了构建工具中的功能超集。除了提供构建功能,Maven 还可以运行报告、生成网站以及促进工作团队成员之间的沟通。

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

非常简单地说,它在比(比如说)Ant 更高的概念级别上运行。使用 Ant,您可以指定要构建的文件和资源集,然后指定您希望它们如何组合在一起,并指定应该在 (clean/compile/jar) 中出现的顺序。使用 Maven,这一切都是隐含的。Maven 期望在特定位置找到您的文件,并且会自动使用它。因此,使用 Maven 设置项目会简单得多,但您必须遵守 Maven 的规则!

于 2012-11-11T20:54:54.840 回答
6

Maven是一个构建工具。与Ant或是Gradle用于Java构建的工具。
如果您是 Java 新手,虽然只是使用您的 IDE 构建,但Maven学习曲线陡峭。

于 2012-11-11T20:58:16.913 回答