Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。在有多个开发团队环境的情况下,Maven 能够在很短的时间内使得每项工作都按照标准进行。因为大部分的工程配置操作都非常简单并且可复用,在创建报告、检查、构建和测试自动配置时,Maven可以让开发者的工作变得更简单。
安装maven:
-
解压Maven,解压缩后的⽬录结构如下:
bin⽬录:存放的是可执⾏命令。
conf⽬录:存放Maven的配置⽂件。 settings.xml 配置⽂件后期需要修改。
lib⽬录:存放Maven依赖的jar包。Maven也是使⽤java开发的,所以它也依赖其他的jar包。
-
配置环境变量 MAVEN_HOME 为安装路径的bin⽬录
-
检查是否配置成功
如果Maven出现JVM内存不足的情况,设置MAVEN_OPTS环境变量-Xms128m -Xmx512mJVM内存过小的问题解决JAVA_OPTS-Xms256m -Xmx1024m
配置:
-
配置本地仓库:
在pom.xml配置需要下载的依赖时,Maven会自动添加相应的jar包:而这个jar包会先在本地仓库中查找,如果本地仓库中找不到,则会去Maven中央仓库去进行下载,并下载的本地仓库,进行引用。
配置的方法是修改 conf/settings.xml 中的
<1ocalRepository>
为一个指定目录作为本地仓库,用来存储jar包。<localRepository>/Users/bruises/software/apache-maven-3.6.1/mvn_resp</localRepository>
-
配置私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。 修改 conf/settings.xml 中的 标签,为其添加如下子标签:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
-
配置JDK编译版本
Mavan默认的编译版本是JDK1.5,为了避免每次在项目中进行手动配置,这里修改conf/settings.xml 中的内容如下:
<profile> <id>jdk8</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>
Maven的生命周期
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件,Maven 对项目构建的生命周期划分为3套:
- clean :清理工作。
- default :核心工作,例如编译,测试,打包,安装等。
- site : 产生报告,发布站点等。
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。
Maven坐标
Maven 中的坐标是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖。
Maven 坐标主要组成:
-
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如com.baidu)
-
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
-
version:定义当前项目版本号
-
scope:可以设置对应jar包的作用范围(编译环境、测试环境、运行环境),如果引入坐标不指定 scope 标签时,默认就是 compile 值
scope取值范围:
依赖范围 编译classpath 测试classpath 运行classpath 例子 compile Y Y Y logback test - Y - Junit provided Y Y - servlet-api runtime - Y Y jdbc驱动 system Y Y - 存储在本地的jar包 - compile:作用于编译环境、测试环境、运行环境。
- test:作用于测试环境。典型的就是Junit坐标,使用Junit时,都会将scope指定为该值。
- provided:作用于编译环境、测试环境。例如
servlet-api
,在使用它时,必须将scope
设置为该值,不然运行时就会报错。 - runtime:作用于测试环境、运行环境。jdbc驱动一般将
scope
设置为该值,当然不设置也没有任何问题。
使用坐标引入jar包的步骤:
- 在项目的 pom.xml 中编写
<dependencies>
标签 - 在
<dependencies>
标签中 使用<dependency>
引入坐标 - 定义坐标的 groupId,artifactId,version
具体的坐标可以到 Maven中央仓库 进行搜索