maven学习笔记
一、Maven简介
1. 什么是Maven
Maven:是Apache提供的免费开源的项目管理工具。它提供了一个项目对象模型(pom.xml)、一个依赖管理系统(根据坐标,帮我们引入依赖)、一套项目生命周期(帮我们方便的进行项目构建)、一组标准集合(Maven工程的目录结构规范,坐标规范)、和一个插件管理系统(提供了进行项目构建的命令)。
2. Maven的作用
- 项目构建:一个项目开发之后,经历的编译、测试、打包、安装、部署等等一系列的过程,叫项目构建
- 主要是测试、运维/实施人员使用的
- 依赖管理:Maven可以帮我们管理jar包,可以轻松的解决依赖的冲突问题
- 依赖:通常指jar包,不仅仅是jar包
- 模块化创建项目
3. 坐标的概念
- 坐标:被Maven管理的每个项目,都必须有自己的唯一标识,这个唯一标识叫坐标
- 坐标的组成:由三部分组成
- groupId:公司名、组织名 域名倒写。比如:
c3p0
,com.jd
- artifactId:项目名、包名。比如:
c3p0
- version:版本号。比如:
0.9.1.2
,1.0-SNAPSHOT
,5.2.0-RELEASE
- groupId:公司名、组织名 域名倒写。比如:
小结
- 什么是Maven:是Apache提供的一个开源免费的项目管理工具
- Maven的作用:
- 项目构建:编译、测试、打包、安装、部署等等一系列的过程,叫项目构建
- 依赖管理:帮我们管理jar包依赖
- 模块化创建项目
- 坐标的概念:
- 被Maven管理的每个项目/jar包,其唯一标识叫坐标
- 由三部分组成:
- groupId:企业名/组织名 域名倒写
- artifactId:包名/项目名
- version:版本号
二、Maven安装配置【操作】
1. Maven的仓库类型
- 本地仓库:本地缓存jar包的文件夹
- 本地仓库默认在:
C:\Users\电脑的用户名\.m2\repository
- 通常会修改配置文件,修改本地仓库的路径
- 本地仓库默认在:
- 远程仓库(私服):一些企业、组织、社区搭建的仓库服务
- 通常企业里人自己搭建私服。私服里的jar包大多数还是来自于中央仓库
- 有些是企业内部自己搭建、自己使用的
- 有些是企业搭建面向整个互联网的,比如:阿里私服
- 中央仓库
- 是Maven官方团队维护的仓库,里边有最全的jar包。
- 但是没有授权的jar包,中央仓库里没有,比如:Oracle驱动包
- 地址:https://repo1.maven.org/maven2
2. 下载与目录结构
- 下载地址:http://maven.apache.org
- Maven的目录结构:
maven
|--bin Maven的可执行命令文件夹
|--boot Maven的引导程序(类加载器)
|--conf 配置文件夹
|--lib Maven的核心程序代码
3. Maven安装配置
3.1 安装Maven
-
Maven是免安装的,直接解压
- 注意:解压路径里,不要有中文、空格、特殊字符
-
注意检查JDK环境变量是否正确
- Maven软件是Java语言编写的
-
配置Maven环境变量:
- 增加
MAVEN_HOME=Maven的解压目录
- 修改Path中添加
%MAVEN_HOME%\bin
- 增加
-
验证Maven配置
- 打开cmd,输入命令:
mvn -version
- 打开cmd,输入命令:
3.2 配置Maven仓库
-
配置步骤:
- 新建一个目录,例如 :repository,目录里不能有中文、空格、特殊字符
- 比如我的路径为:D:\develop_software\maven\repository
- 修改Maven的
conf\settings.xml
配置文件
-
扩展:
- 修改settings.xml里,设置Maven编译的版本jdk1.8。在
<profiles>
里边增加:
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
- 修改settings.xml里,设置Maven编译的版本jdk1.8。在
小结
- 仓库类型
- 本地仓库:自己电脑上缓存jar包的文件夹
- 远程仓库(私服):一些企业、社区、组织自己搭建的仓库服务
- 中央仓库:Maven官方团队维护仓库服务
- maven的安装:
- 解压。注意:解压的目录里不要有中文、空格、特殊字符
- 配置环境变量:
- 新增
MAVEN_HOME
, 值就是maven软件的解压目录 - 修改
Path
,值里新增%MAVEN_HOME%\bin
- 新增
- 配置本地仓库:
- 创建repository目录里不要有中文、空格 、特殊字符
- 修改Maven的
conf\settings.xml
,增加本地仓库的配置:<localRepository>
标签
三、Maven项目的目录结构
一个项目要想使用Maven进行管理,那么这个项目的目录结构就必须要符合Maven的要求:
maven项目
|--pom.xml 项目对象模型文件,一个Maven项目必定有pom.xml文件
|--src
|--main 项目的主体程序代码目录
| |--java 项目的Java程序代码放在这文件夹里
| |--resources 项目的配置文件放在这里
| |--webapp 项目的web资源放在这里,html,css,js,jsp,音频,图片,视频等等
| |--WEB-INF
| |--其它web资源
|--test 项目的单元测试代码目录
|--java 项目的单元测试代码
|--resources 项目单元测试需要的配置文件
小结
src\main\java
:放主体程序代码的java文件src\main\resources
:放主体程序代码的配置文件src\main\webapp
:放主体程序代码的web资源:html、css、js、jsp等等
四、Maven构建项目
1. 项目构建的生命周期
- Maven命令执行的规律:
clean: clean
compile: compile
test: compile=>test
package: compile=>test=>package
install: compile=>test=>package=>install
人的生命周期:婴儿=>儿童=>少年=>青年=>中年=>老年
- Maven有三套生命周期
- 清理生命周期:CleanLifeCycle
- 有常用命令:
clean
- 有常用命令:
- 默认生命周期(构建生命周期):DefaultLifeCycle
- 有常用命令:
compile->test->package->install->deploy
- 有常用命令:
- 站点生命周期:SiteLifeCycle
- 有常用命令:
site
。生成Maven项目的描述信息文档
- 有常用命令:
- 清理生命周期:CleanLifeCycle
- 如果执行了一个目标命令:Maven会把生命周期里的命令,从第一个一直执行到目标命令为止
小结
- 常用命令:
mvn clean
:清理。删除掉target目录mvn compile
:编译。把主体程序代码进行编译,放到target目录里mvn test
:测试。编译并执行单元测试代码mvn package
:打包。Java项目打成jar包,web项目打包war包mvn install
:安装。把程序包安装到本地仓库,安装位置是坐标对应的文件夹
- Maven的生命周期
- 清理生命周期CleanLifeCycle:
clean
- 默认生命周期/构建生命周期DefaultLifeCycle:
compile=>test=>package=>install=>deploy
- 站点生命周期SiteLifeCycle:
site
- 生命周期的作用:只要执行一个目标命令,Maven会从生命周期里第一个阶段开始,执行到目标命令为止
- 清理生命周期CleanLifeCycle:
五、Maven管理依赖和插件
Maven的依赖管理
- 把Maven配置到idea中
- 在idea里创建Maven的java项目
- 在idea里创建Maven的web项目
- Maven项目中,引入依赖的方法
- Maven的依赖范围配置,解决jar包冲突
1. 在idea配置Maven(操作)
- 配置Maven
- 增加运行的配置项:
-DarchetypeCatalog=internal
2. 在idea创建Maven项目
2.1 创建Maven的java项目
- 创建Module,选择Maven类型,选择骨架
org.apache.maven.archetypes:maven-archetype-quickstart
- 设置项目的坐标
-
再继续步骤,跟以前的一样:设置module的名称和位置
注意:不要和已有的其它module重名或者重位置
-
创建后,如果弹窗
Maven projects need to be imported
,就选择 启动自动导入。作用是:如果pom.xml文件有变更,Maven会自动读取,立即生效;否则就要手动导入
- 如果文件夹缺失,就创建补全,然后刷新