Maven在理论和实践中做了什么?什么时候值得使用它?[已关闭]

2022-08-31 07:08:16

我即将开始一个Java项目,只是为了练习。我读过关于Maven的文章,但我实际上并不了解它何时应该被使用。

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


答案 1

它的作用

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

它还围绕“构建可移植性”主题进行设计,因此您不会遇到这样的问题,即在一台计算机上使用相同的构建脚本,但在另一台计算机上工作(这是一个已知问题,我们有Windows 98计算机的VM,因为我们无法在其他任何地方编译我们的一些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,你会发现构建管理几乎不需要任何时间。

如何开始

最好的起点是“5分钟内的Maven”。它将帮助你从一个准备好的项目开始,以便你编写所有必要的文件和文件夹设置(是的,我建议使用快速入门原型,至少在开始时是这样)。

开始使用后,您需要更好地了解该工具的使用方式。因此,“Better Builds with Maven”是了解其工作原理的最彻底的地方,但是,“Maven:完整参考”更是最新的。阅读第一个以了解,但随后使用第二个作为参考。


答案 2

来自 Sonatype 文档

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

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

简而言之,它在比(比如)蚂蚁更高的概念层面上运作。使用 Ant,您可以指定要构建的文件和资源集,然后指定希望它们如何组合在一起,并指定应出现的顺序(干净/编译/jar)。对于Maven来说,这一切都是隐含的。Maven希望在特定位置找到您的文件,并将自动使用它。因此,使用Maven设置项目可以简单得多,但您必须遵守Maven的规则!


推荐