Apache Maven 教程: Java 构建自动化工具

今天,我们将学习

1. maven是什么

2. maven特征

3. maven插件

4. mavenPOM

5. maven生命周期

6. Maven 存储库

7. 如何安装 Maven

8.接下来要学习的高级 Maven 概念

什么是Maven

生成是将源代码文件转换为软件工件以在计算机上运行的过程。此过程通常由构建工具(控制其他程序的程序)管理。

Maven是Java项目中最流行的事实上的构建和管理工具。Maven 基于项目对象模型 (POM) 的概念,它有助于从中心信息自动管理项目的生成、文档和报告。

多年来,Maven变得非常流行,它定义了用于构建软件的通用接口。Maven实现了可以从Maven存储库中检索的插件。

简而言之,Maven是一个用于构建和管理基于Java的项目的工具,使Java开发人员的工作变得更加容易。

Maven 为许多任务提供支持,包括:

从头开始轻松构建 Java 项目,无需编写脚本

轻松添加 JAR 和项目依赖项

访问项目信息,例如日志文档、单元测试、依赖项列表等。

更新 JAR 和依赖项的中央存储库。

将 Java 项目与控制系统集成

何时使用Maven

当项目具有许多依赖项或项目依赖项版本经常更新时,Maven 生成工具是理想的选择。它也非常适合持续构建、集成和测试,或者当您需要从源代码生成文档时。

Maven 优点和缺点

优点:

Maven可以通过读取文件自动添加所有项目依赖项。pom

在文件中添加依赖项非常容易。pom

Maven 可以轻松地在不同的环境中启动项目,而无需处理注入、构建等。

缺点:

Maven 必须与 IDE 的 Maven 插件一起下载

只能将现有依赖项添加到项目中

Maven的特征

现在我们知道了Maven是什么以及它是如何工作的,让我们了解这个构建工具最显着的功能。我们将在本文后面更详细地分解这些内容。

POM :项目对象模型 (POM) 文件是包含项目和配置信息的 XML 文件。Maven POM文件用于执行命令。

#依赖项和存储库:依赖项是外部 Java 库,而存储库是打包的 JAR 文件的目录。Maven repository.

构建插件:构建插件以执行项目的特定目标。这些将添加到 POM 文件中。Maven提供标准插件,或者您可以实现自己的插件。

生命周期、阶段和目标:构建生命周期由多个构建阶段组成,这些阶段只是一系列项目目标。生成生命周期称为 Maven 命令。

构建配置文件:生成配置文件是一组配置值,允许您使用不同的配置进行构建。您可以使用配置文件的元素将构建配置文件添加到 POM 文件。


Maven 插件

Maven可以接受各种插件来执行任务。由于Maven的核心很小,因此插件对于利用此工具的智能至关重要。插件只是实现逻辑以在构建过程中执行各种任务的代码。

一些最常见的插件是:

Compiler Plugin:包含编译逻辑

Jar Plugin:包含创建 jar 的逻辑

Surefire Plugin:包含执行单元测试的逻辑

Maven插件由作为工作单元的目标组成。目标是我们想要对由POM文件定义的项目执行的操作。查看此图以了解这些组件如何交互:


Maven POM

Maven 项目由 POM 文件(项目对象模型)描述,该文件是 Java 项目的声明性描述。POM是一个XML文件,用于定义项目的唯一Maven坐标,依赖项,所需的插件,参数等。

调用时,Maven 会在当前目录结构中查找 POM 文件。没有它,将抛出错误。然后,Maven读取POM,收集配置信息并执行目标。

可以在 POM 中指定的一些配置包括项目依赖项、可以执行的插件或目标、构建配置文件等。

您还可以指定其他信息,例如项目版本、描述、开发人员和邮件列表。

让我们看一下 POM 文件的最小版本。

<project>

    <modelVersion>4.0.0</modelVersion>

    <groupId>io.datajek</groupId>

    <artifactId>empty-project</artifactId>

    <version>1</version>

</project>

该文件包含最少的项目描述,没有依赖项或插件。如果在包含上述 POM 文件的目录中运行,您将看到成功的生成。mvn install

我们有几个元素用于创建此文件:

项目:新项目的根元素

型号我们建议使用 4.0.0 版版本

组标识:这是项目组的唯一 ID

artifactId:这给出了一个项目名称

版本:保存项目的版本号

其他元素包括依赖项、名称、范围和打包。

Maven 生命周期

Maven 支持构建生命周期,这是一组用于构建项目的有序操作。构建生命周期由构建阶段组成,每个阶段都有插件目标,这些目标在阶段执行时执行。

为了更好地理解这一点,让我们看一个例子。干净的生命周期包括:

pre-clean

clean

post-clean

生命周期的各个阶段按顺序执行,这意味着将首先执行、执行第二个阶段,最后执行。pre-cleancleanpost-clean

如果我们使用 在 EmptyProject 中运行清理阶段,我们可以使用该命令指定阶段。当我们执行该阶段时,如果前一阶段有任何插件目标,它也将执行。mvn cleanmvnclean

Maven 存储库

Maven 中的存储库包含构建工件和依赖项。在软件开发中,工件是指在过程中生成的对象,如设计文档、数据模型和工作流图。

Maven存储库有两种主要类型:

本地存储库:Maven 运行并捕获远程下载的目录

远程存储库:任何其他类型的存储库。例如,由第三方设置的存储库或公司内的 HTTP 服务器。

一般来说,除了清理之外,本地存储库可以单独保留。您将需要下载远程存储库,这些存储库在声明依赖项时触发。

默认情况下,Maven 将从中央存储库下载。

如何安装 Maven

下载Maven非常容易。首先验证您是否安装了 Java。检查是否设置了 Java 环境变量。从那里,从官方网站下载Maven。

您可以从系统中的任何位置解压缩 zip,并将 bin 目录添加到 PATH 环境变量和系统变量中。

从那里,然后运行命令。正确的安装将打印以下行:cmdmvm -v


接下来要学习的高级 Maven 概念

您现在应该对Maven是什么以及如何在Java项目中使用它有一个深刻的了解。Maven 可以使您的构建过程更加轻松,并自动执行耗时的任务。但是Maven还可以为您提供更多。

接下来您应该学习的高级Maven概念是:

Maven 中的依赖关系管理和作用域

插件管理

梅文超级聚甲醛

Maven 中的聚合

要开始使用这些高级概念并更多地练习我们今天所学的知识,请查看 Educateative 的课程使用 Maven 构建 Java 项目。这个独特的课程提供了易于遵循的动手浏览器内练习,以教授 Maven 概念,如插件、目标、依赖项等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容