Maven介绍_下载_安装_使用_原理

文章目录

  • [1 Maven介绍](#1 Maven介绍)
    • [1.1 Maven是介绍](#1.1 Maven是介绍)
    • [1.2 Maven的作用](#1.2 Maven的作用)
  • [2 Maven下载与安装](#2 Maven下载与安装)
    • [2.1 官网下载](#2.1 官网下载)
    • [2.2 文件目录](#2.2 文件目录)
    • [2.3 环境配置](#2.3 环境配置)
  • [3 Maven基础概念](#3 Maven基础概念)
    • [3.1 仓库分类](#3.1 仓库分类)
    • [3.2 依赖坐标](#3.2 依赖坐标)
    • [3.3 坐标组成](#3.3 坐标组成)
  • [4 Maven配置](#4 Maven配置)
    • [4.1 本地仓库配置](#4.1 本地仓库配置)
    • [4.2 远程仓库的设置](#4.2 远程仓库的设置)
    • [4.3 镜像仓库配置](#4.3 镜像仓库配置)
    • [4.4 IDEA配置Maven](#4.4 IDEA配置Maven)
  • [5 Maven项目创建](#5 Maven项目创建)
    • [5.1 Maven项目的构建命令](#5.1 Maven项目的构建命令)
    • [5.2 IDEA创建Maven工程](#5.2 IDEA创建Maven工程)
  • [6 Maven依赖管理](#6 Maven依赖管理)
    • [6.1 依赖配置](#6.1 依赖配置)
    • [6.2 依赖传递](#6.2 依赖传递)
    • [6.3 依赖冲突](#6.3 依赖冲突)
    • [6.4 可选依赖](#6.4 可选依赖)
    • [6.5 排除依赖](#6.5 排除依赖)
    • [6.6 依赖范围](#6.6 依赖范围)
    • [6.7 依赖范围的传递性](#6.7 依赖范围的传递性)
  • [7 生命周期与插件](#7 生命周期与插件)
    • [7.1 生命周期](#7.1 生命周期)
    • [7.2 插件](#7.2 插件)

1 Maven介绍

1.1 Maven是介绍

Maven的本质是一个项目管理工具,将项目开发中和管理过程抽象成一个项目对象模型 ---POM

POM:Project Object Model --即项目对象模型

1.2 Maven的作用

  • 项目构建:提供标准的,跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源lar包,避免资源之间的版本冲突问题
  • 统一开发结构:提供标准的,统一的项目结构

2 Maven下载与安装

2.1 官网下载

Maven官网:http://maven.apache.org/.

Maven下载地址:https://maven.apache.org/download.cgi

2.2 文件目录

Maven是绿色软件,下载解压即可使用

2.3 环境配置

  • Maven运行需要依赖JAVA_HOME (前提需要安装配置好 jdk )
  • 设置Maven自身的运行环境,需要配置MAVEN_HOME

1、配置Maven的安装目录:MAVEN_HOME

2、配置Maven的bin路径(path目录下)

3、cmd指令mvn检查安装

cmd输入mvn显示如下信息表示maven安装成功

3 Maven基础概念

3.1 仓库分类

  • 仓库:用于存储资源,包含各种jar包

  • 仓库分为:本地仓库、私服仓库、中央仓库 三种

    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:私服仓库和中央仓库属于远程仓库,不在本地计算机上,为本地库提供资源
    • 中央仓库:Maven团队维护,存储所有资源的仓库
    • 私服仓库:部门或公司范围内存储资源的仓库,从中央仓库获取资源
  • 私服的作用:保存具有版权的资源,一定范围内部共享,不对外开放

3.2 依赖坐标

3.3 坐标组成

  • 1 坐标组成
坐标名 含义 内容
groupId 定义当前Maven项目隶属的组织 域名倒写
artifactId 当前Maven项目的名称 通常是模块名称
version 定义当前项目的版本号 创建时定义
  • 2 坐标官网

官网:https://mvnrepository.com/

4 Maven配置

4.1 本地仓库配置

  • 1、默认位置

    默认的本地仓库的位置,在C:\Users\Administrator.m2\repository

  • 2 打开conf目录下的setting.xml文件查看仓库的默认位置

  • 3、设置自定义的仓库位置

    设置自定义仓库之后,所有的jar包就会下载到此文件夹内

4.2 远程仓库的设置

中央仓库在国外,直接从本地连接外网下载需要的资源文件,传输和下载速率较慢,所以一般会使用私服作为衔接,用于资源的下载。

4.3 镜像仓库配置

阿里为广大开发者提供了阿里云镜像仓库,大大提高资源文件的下载和传输速率,提高了开发效率。

在settings.xml文件中配置镜像仓库

xml 复制代码
	 <!--配置aliyun镜像仓库-->
    <mirror>
	  <!-- 镜像的唯一标识符 -->
      <id>nexus-aliyun</id>
	  <!-- 对中央仓库进行镜像 -->
      <mirrorOf>central</mirrorOf>
	  <!-- 镜像名称 -->
      <name>Neuxs aliyun</name>
	  <!-- 镜像地址 -->
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

4.4 IDEA配置Maven

File | Settings | Build, Execution, Deployment | Build Tools | Maven

5 Maven项目创建

5.1 Maven项目的构建命令

Maven构建命令使用 mvn 开头,后面添加功能参数,可以一次执行多个命令,使用空格分开

复制代码
mvn compile 				#编译	
mvn clean 				    #清理
mvn test 				    #测试
mvn package 				#打包
mvn install 				#安装到本地库

指令的作用:
mvn compile 执行编译操作:
    生成项目编译后的class文件,项目根目录下生成target目录,
    class文件存放的位置在 target 目录下
    
mvn clean 执行清理操作:
	执行此命令,会将生成的class文件包括target目录一并清除

mvn test  执行测试操作,下载插件
	执行此命令,会生成项目的测试报告,以及测试的class文件,
	存放在target目录下

mvn package  执行打包操作:
	执行此命令,会将源程序进行打包操作,如jar包,或war包
	打包的过程中:先执行compile编译
				 再执行test-compile 测试编译
				 再执行test 测试动作
				 最后才执行package打包操作

mvn install  执行安装操作
	将打包后的项目存放在groupId下的artfactId下的version下
	安装的过程:同上,最后执行安装

5.2 IDEA创建Maven工程

  • 1、创建项目
  • 2、构建项目

6 Maven依赖管理

6.1 依赖配置

  • 依赖指的是当前项目运行需要的jar包,一个项目可以设置多个依赖
  • 格式:

6.2 依赖传递

依赖具有传递性,可以分为直接依赖和间接依赖

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:直接依赖的资源如果依赖其他资源,那么当前项目就间接依赖其他资源

6.3 依赖冲突

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,反之越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置相同依赖的不同版本,后配置的堵盖先配置的

6.4 可选依赖

可选依赖:指的是对外隐藏当前依赖的资源,资源不透明

6.5 排除依赖

排除依赖:是指主动断开依赖的资源,被排除的资源无需指定版本

6.6 依赖范围

  • 依赖范围:

    • 是指依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
  • 作用范围:

    • 主程序范围有效:main文件夹范围内
    • 测试程序范围有效:test文件夹范围内
    • 是否参与打包:package指令范围内
  • scope的属性值:

scope main test package 范例
compile 默认) Y Y Y log4j
provide Y Y N servlet-api
runtime N N Y jdbc
test N N Y junit

6.7 依赖范围的传递性

带有依赖范围的资源在进行传递时,作用范围将收到影响

间接依赖 / 直接依赖 compile provide runtime test
compile compile provide runtime test
provide
runtime runtime provide runtime test
test

7 生命周期与插件

7.1 生命周期

  • 1、项目构建生命周期

    Maven构建生命周期描述的是一次构建过程经历了多少个事件

  • 2 项目构建生命周期,Maven对项目构建的生命周期划分为3套(上述周期划分)

    • clean:清理工作
    • default:核心工作,如编译,测试,打包,安装部署
    • site:产生报告,发布站点
  • 3 clean 构建生命周期

    • pre-clean:执行一些需要在clean之前完成的工作
    • clean:移除所有上一次构建生成的文件
    • post-clean:执行一些需要在clean之后完成的工作
  • 4 default 构建生命周期

操作 名称 功能
validate 校验 校验项目是否正确,并且所欲的信息可以完成项目的构建
initialize 初始化 初始化构建状态
generate-sources 生成源代码 生成包含在编译阶段中的任何源代码
process-sources 处理源代码 处理源代码
generate-resources 生成资源文件 生成将包含在项目包中的资源文件
process-resources 处理资源文件 复制和处理资源到目标目录,为打包阶段做准备
compile 编译 编译项目中的源代码
process-classes 处理类文件 处理编译生成的文件
generate-test-sources 生成测试源代码 生成包含在编译阶段中的任何测试代码
process-test-sources 处理测试源代码 处理测试代码
generate-test-resources 生成测试资源文件 生成将包含在项目包中的测试资源文件
process-test-resources 处理测试资源文件 复制和处理测试资源到目标目录
test-compile 编译测试源码 编译测试源代码到测试目标目录
process-test-classes 处理测试类文件 处理测试源代码编译生成的文件
test 测试 使用合适的单元测试框架运行测试
prepare-package 准备打包 在实际打包之前,执行必要的操作为打包做准备
package 打包 将编译后的代码打包成可分发格式的文件
pre-integration-test 集成测试前 在执行测试之前的必要准备工作
integration-test 集成测试 处理和部署项目到可以运行集成测试的环境中
post-integration-test 集成测试后 在执行测试之后的必要准备工作
verify 验证 运行任意的检查未验证项目包有效且达到质量标准
install 安装 安装项目包到本地仓库,这样项目就可以用作其他本地项目的依赖
deploy 部署 将最终的项目包复制到远程仓库中与其他开发者的项目共享
  • 3 site 构建生命周期
    • pre-site : 执行一些需要在生产站点文档之前完成的工作
    • site :生成项目的站点文档
    • post-site :执行一些需要在站点文档之后完成的工作,并未部署做准备
    • site-deploy:将生成的站点文档部署到特定的服务器上

7.2 插件

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认Maven在各个生命周期上绑有预设的功能
  • 通过插件可以自定义其他功能
xml 复制代码
    <!--构建-->
    <build>
        <!--设置插件-->
        <plugins>
            <!--具体插件-->
            <plugin>
                <!--插件的坐标-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.0</version>
                <!--执行操作-->
                <executions>
                    <!--具体执行的操作-->
                    <execution>
                        <!--目标-->
                        <goals>
                            <!--对main文件夹中的源代码进行打包-->
                            <goal>jar</goal>
                        </goals>
                        <!--生成测试代码时使用-->
                        <phase>generate-test-resources</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
相关推荐
shane-u14 小时前
Maven私服搭建与登录全攻略
java·maven
半部论语14 小时前
jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
java·开发语言·maven·intellij-idea
我喜欢山,也喜欢海17 小时前
Jenkins Maven 带权限 搭建方案2025
java·jenkins·maven
kaikaile199517 小时前
Jenkins集成Maven
servlet·jenkins·maven
.生产的驴17 小时前
Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
java·运维·数据库·spring·docker·容器·maven
.生产的驴1 天前
Maven 公司内部私服中央仓库搭建 局域网仓库 资源共享 依赖包构建共享
java·maven
Brilliant Nemo1 天前
五、框架实战:SSM整合原理和实战
maven·mybatis
亮1111 天前
GITLAB跑gradle项目 不借助maven-publish直接上传到nexus私人仓库
java·gitlab·gradle·maven
极小狐1 天前
极狐GitLab 通用软件包存储库功能介绍
java·数据库·c#·gitlab·maven
Meta392 天前
解决IDEA Maven编译时@spring.profiles.active@没有替换成具体环境变量的问题
spring·maven·intellij-idea