目录
概述
Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。
官网:https://maven.apache.org/
下载地址:https://maven.apache.org/download.cgi
Maven的作用
1. 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
2. 统一项目结构:提供标准、统一的项目结构
3. 项目构建:maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式
maven文件作用及配置
bin目录 : 存放的是可执行命令。(mvn 命令重点关注)
conf目录 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)
1). 使用超级记事本软件,打开settings.xml文件,定位到53行
2). 复制<localRepository>标签,粘贴到注释的外面(55行)
3). 复制之前新建的用来存储jar包的路径,替换掉<localRepository>标签体内容
lib目录 :存放Maven依赖的jar包。
配置本地仓库
在自己计算机上新一个目录(全英文,无特殊字符的路径地址)(本地仓库,用来存储jar包)
配置阿里云私服
进入到conf目录下修改settings.xml配置文件:
1). 使用超级记事本软件,打开settings.xml文件,定位到160行左右
2). 在<mirrors>标签下为其添加子标签<mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
注: 只可配置一个<mirror>(另一个要注释!) ,不然两个可能发生冲突,导致jar包无法下载!!!
配置环境变量
MAVEN_HOME环境变量的值,设置为maven的解压安装目录
PATH环境变量的值,设置为:%MAVEN_HOME%\bin
打开DOS命令提示符进行验证 mvn -v
Maven模型
项目对象模型 (Project Object Model)
依赖管理模型(Dependency)
构建生命周期/阶段(Build lifecycle & phases)
在idea中配置maven
全局设置
进入到IDEA欢迎页面
选择 IDEA中 File => close project
打开 All settings , 选择 Build,Execution,Deployment => Build Tools => Maven
如果在运行中,出现jdk版本问题就,先检查上述步骤,实在不行,在pom文件中手动配置jdk版本,并刷新Maven
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
导入Maven项目
如果没有Maven面板,选择 View => Appearance => Tool Window Bars
方式1:
使用Maven面板,快速导入项目
打开IDEA,选择右侧Maven面板,点击 + 号,选中对应项目的pom.xml文件,双击即可
方式2:
使用idea导入模块项目
File => Project Structure => Modules => + => Import Module
找到要导入工程的pom.xml
点击maven中的lifecycle中的clean检测,如果能执行报错则maven的配置有问题,如果配置没问题,在仓库里查找下载不下来的GAV
Maven仓库
用于存储资源,管理各种jar包
本地仓库:自己计算机上的一个目录(用来存储jar包)
中央仓库:由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
远程仓库(私服):一般由公司团队搭建的私有仓库(在创建模块时使用,点击上方的小齿轮
https://start.aliyun.com
https://start.spring.io
jar包的查找顺序则变为: 本地仓库 --> 远程仓库--> 中央仓库
POM配置详解
POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。使用pom.xml文件来实现
<project> :pom文件的根标签,表示当前maven项目
<modelVersion> :声明项目描述遵循哪一个POM模型版本,目前POM模型版本是4.0.0
坐标 :<groupId>、<artifactId>、<version>,定位项目在本地仓库中的位置,由以上三个标签组成一个坐标
<packaging> :maven项目的打包方式,通常设置为jar或war(默认值:jar),父工程用pom
Maven坐标详解
使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号
依赖管理
依赖配置
依赖:指当前项目运行所需要的jar包。
引入的依赖
1. 在pom.xml中编写<dependencies>标签
2. 在<dependencies>标签中使用<dependency>引入坐标
3. 定义坐标的 groupId、artifactId、version
4.点击刷新按钮,引入最新加入的坐标
注意事项:
1. 如果引入的依赖,在本地仓库中不存在,将会连接远程仓库 / 中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)
2. 如果不知道依赖的坐标信息,可以到mvn的中央仓库(https://mvnrepository.com/)中搜索
添加依赖的几种方式:
利用中央仓库搜索的依赖坐标:https://mvnrepository.com/
利用IDEA工具搜索依赖:alt+insert
熟练上手maven后,快速导入依赖
依赖传递
依赖具有传递性
1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系
2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
排除依赖exclusions
指主动断开依赖的资源。
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven-projectB</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖, 主动断开依赖的资源 假设 junit为B中要排出的依赖,先写目标B的GAV 在写junit的GAV-->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
项目中导入依赖的jar包后,默认情况下,可以在任何地方使用。
如果希望限制依赖的使用范围,通过<scope>标签设置其作用范围
作用范围:
1. 主程序范围有效(main文件夹范围内)
2. 测试程序范围有效(test文件夹范围内)
3. 是否参与打包运行(package指令范围内)
生命周期
对项目构建的生命周期划分为3套
clean:清理工作。
default:核心工作。如:编译、测试、打包、安装、部署等。
site:生成报告、发布站点等。
常用
clean:移除上一次构建生成的文件
compile:编译项目源代码
test:使用合适的单元测试框架运行测试(junit)
package:将编译后的文件打包,如:jar、war等
install:安装项目到本地仓库
安装jre
先找到jdk11的目录下,并复制,打开cmd,cd jdk11路径, 如果没反应, jdk盘符: 回车 然后粘贴后面的代码
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
并配置环境变量