Maven以POM文件(项目对象模型)为中心,POM文件是xml格式,是自动构建的配置文件,位于项目的根目录下。

如果熟悉make 与 Makefile,可以看出,maven相当于make,pom.xml相当于makefile

下面是Maven读取POM文件执行构建过程的示意图

下面简单说明一下上图中的一些概念,后续会有更详细的的介绍。

POM文件

执行Maven命令时,Maven根据POM文件中的配置来执行命令。

依赖项和存储库

pom文件包含了依赖项的配置,依赖项是项目使用的外部JAR文件(Java库)。如果本地库中没有找到依赖项,Maven将从中央库下载依赖项,并存放在本地库中。本地存储库只是本机上的一个目录,这个目录位置可配置。另外除了中央库,还可以配置其他远程库,例如公司内部可以架设一个远程库供所有开发人员使用。后续会有详细介绍。

构建生命周期、阶段和目标

项目的构建通常包含数个相互独立的任务,可以独立执行,如生成文档,构建jar包等。单个任务的执行过程被称为一个构建生命周期,构建生命周期由一系列的构建阶段组成,每个阶段包含一系列的构建目标。

我们可以执行构建阶段或构建目标。阶段按顺序执行,执行一个阶段则会先执行该阶段之前的所有阶段。当执行构建阶段时,将会按顺序执行其中包含的所有构建目标。构建目标可以被分配到一个或多个构建阶段。我们还可以直接执行构建目标。

插件

插件是构建目标的集合,也称为MOJO (Maven Old Java Object)。可以把插件理解为一个类,而构建目标是类中的方法。构建阶段包含一系列的构建目标,可以理解为按顺序调用各个插件中的构建目标(方法),然后一系列的构建阶段组成一个构建生命周期。

Maven实际上是一个插件执行框架。如有必要,可以用java开发自定义插件。

构建profile

如果需要构建项目的不同版本,可以使用构建profile。例如,项目中需要构建开发版本、测试版本以及正式版本,这些版本可以通过在pom文件中添加不同构建profile构建。执行maven时指定不同的构建profile就可以。

Maven - 工作原理的更多相关文章

  1. maven 工作原理和添加jar包技巧

        相 信只要做过 Java 开发的童鞋们,对 Ant 想必都不陌生,我们往往使用 Ant 来构建项目,尤其是涉及到特别繁杂的工作量,一个 build.xml 能够完成编译.测试.打包.部署等很多 ...

  2. Maven使用笔记(三)Maven的工作原理

    概述 Maven是一个项目管理工具,他包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来运行定义生命周期阶段中插件目标的逻辑. Maven是基于约定优于配置的思想来管理代码 ...

  3. Maven 核心原理

    Maven 核心原理 标签 : Java基础 Maven 是每一位Java工程师每天都会接触的工具, 但据我所知其实很多人对Maven理解的并不深, 只把它当做一个依赖管理工具(下载依赖.打包), M ...

  4. Optaplanner规划引擎的工作原理及简单示例(2)

    开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...

  5. RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用

    深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...

  6. 深入解读RabbitMQ工作原理及简单使用

    RabbitMQ系列目录 RabbitMQ在Ubuntu上的环境搭建 深入解读RabbitMQ工作原理及简单使用 Rabbit的几种工作模式介绍与实践 Rabbit事务与消息确认 Rabbit集群搭建 ...

  7. 第一篇——Struts2的工作原理及HelloWorld简单实现

    Struts2工作原理: 一个请求在Struts框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter): 3.接着F ...

  8. Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

    文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...

  9. Struts2学习一----------Struts2的工作原理及HelloWorld简单实现

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2工作原理 一个请求在Struts2框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2.这个请求 ...

随机推荐

  1. Jmeter - Linux 下面执行jmeter-server的时候出现:An error occurred: Cannot start. localhost is a loopback address.错误

    Jmeter - Linux 下面执行jmeter-server的时候出现:An error occurred: Cannot start. localhost is a loopback addre ...

  2. 字符串题汇总(python3)

    1.最小编辑距离 假设有两个字符串s1和s2,计算通过增添.删除.替换三种操作后,从s1转变为s2所需要的操作次数. #coding=utf-8 class Solution: def editDis ...

  3. 1、MYSQL 数据库的安装与配置

    安装 1.打开官网https://www.mysql.com,选择社区版本   2.如图点击下在安装(本人在下载过程中亲身感觉下载时间非常漫长,需要等待,不知道为啥会有限速,可以参考网上教程用迅雷进行 ...

  4. 2020寒假 05 ——eclipse安装scala环境

    在eclipse中安装Scala环境 1安装eclipse插件步骤,点击help,选择Eclipse Marketplace 2.输入Scala,点击go 3.选择搜索到的Scala IDE 4.7. ...

  5. JS在不改变原数组的情况下复制一个新的数组

    var a={1,2,3,4} var data= JSON.parse(JSON.stringify(a[0])) a.push(data) a[4]=5 这样就不会改变原数组a的数据

  6. python matplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)

    //2019.7.14晚matplotlib七种常见图像输出编程大全 七种图形汇总输出如下: import numpy as np #导入数据结构nmupy模块import matplotlib.py ...

  7. B. Sport Mafia 二分

    B. Sport Mafia time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  8. IDEA快速定位一个文件到项目目录

    第一步:快捷键搜索java文件关键字 快捷键Ctrl+N,如果设置为Eclipse版本快捷键为Ctrl+Shift+R 第二步:定位文件到项目目录中 1.在当前文件下 2.点击定位按钮 3.定位到项目 ...

  9. C++面试常见问题——05字符串的逆序

    字符串的逆序 #include<iostream> #include<string.h> using namespace std; void ReverseStr(char s ...

  10. gpasswd命令 gpasswd -a user_name group_name

    最后一句 gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow管理工具. 语法 gpasswd(选项)(参数) 选项 -a:添加用户到组: -d:从组删除用户: - ...