1.Maven能干什么
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
提供了一套标准化的项目结构(IDEA,ESCAPLSE等工具目录都不同,移植项目不太方便,使用Maven创建的项目就不会这样)
提供了一套标准化的构建流程(编译,测试,打包,发布…)
提供了一套依赖管理机制(依赖管理其实就是管理你项目所依赖的第三方资源(ja包、插件.…))

1
2
3
4
5
6
|
<!--导入mysql驱动Jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
|


2.Maven安装配置
1
2
3
4
|
https://maven.apache.org/
https://repo1.maven.org/maven2/ maven中央仓库,里面存放免费开源的jar包
https://developer.aliyun.com/mvn/view 阿里云私服仓库
|

1
2
3
4
5
|
bin
boot maven自带jar包
conf maven配置文件
创建Maven环境变量
|

2.1.配置本地仓库
1
|
修改conf目录下settings.xml文件,添加<localRepository>D:\Maven\apache-maven-3.9.8\maven_resp</localRepository
|

2.2.配置阿里云私服
1
2
3
4
5
6
|
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
|

3.Maven基本使用
3.1.Maven常用命令
1
2
3
4
5
|
compile:编译
clean:清理
test:测试
package:打包
install:安装
|
在项目的pom.xml文件下执行
1
2
3
|
mvn compile
此时会自动下载,下载的jar包存放在Maven安装目录下自己创建的maven_repo目录下
|

1
2
3
4
5
6
7
|
mvn clean 清除target目录,target目录存放编译的字节码文件
mvn package 将java项目打包成jar包
mvn test 将目录下的java代码进行测试执行,屏幕会输出测试代码执行效果
mvn install 将当前项目安装到本地仓库,此时本地仓库存在对应jar包
|
3.2.Maven生命周期

1
|
就是执行install前默认会执行 compile test package
|
4.IDEA配置Maven项目
4.1.IDEA配置Maven环境
File—设置—搜索maven—配置对应信息(路径&&仓库)

4.2.Maven坐标详解
Maven坐标是资源唯一标识,使用坐标来定义项目或引入项目中需要的依赖
Maven坐标组成
1
2
3
|
groupld:定义当前Maven]项目隶属组织名称(通常是域名反写,例如:com.itheima)
artifactld:定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service)
versionI定义当前项目版本号
|

4.3.IDEA导入Maven项目
打开IDEA,右侧有个maven面版,点击加号

找到一个项目的pom.xml文件即可导入
5.依赖管理与依赖范围

5.1.使用坐标导入Jar包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!-- 导入mysql的驱动Jar包,使用过才会有提示-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<!--导入druid数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
</dependencies>
|
ALT+Insert可以快速导入Jar包依赖
6.IDEA导入第三方依赖
点击添加maven项目

选择对应pom.xml文件,点击确定

在自己的pom.xml中安装依赖
1
2
3
4
5
6
|
<!-- 引入第三方依赖-->
<dependency>
<groupId>com.example</groupId>
<artifactId>itheima-utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
|
7.Maven高级
7.1.分模块设计与开发
分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。
将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。

案例—将tlias改成分模块设计方案
创建一个Maven模块

只需要将pojo和utils新建两个模块,在这两个模块中安装对应依赖,和包,在主项目tlias中导入上述两个依赖即可正常运行

7.2.继承与聚合
7.2.1.Maven继承

1.创建maven模块tias-parent,该工程为父工程,设置打包方式pom(默认jar)。
1
2
3
|
jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
war:普通web程序打包,需要部署在外部的tomcat服务器中运行
pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理
|
父工程也需要继承springboot的父工程,修改其它的模块,将父工程设置为tias-parent
1
2
3
4
5
6
|
<parent>
<groupId>cn.edu</groupId>
<artifactId>tlias-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../tlias-parent/pom.xml</relativePath> //tlias-parent的pom文件路径
</parent>
|
然后再父工程中将项目公有的依赖配置好,子项目就可以删除了
7.2.2.Maven版本锁定
在maven中,可以在父工程的pom文件中通过.来统一管理依赖版本。子工程引入依赖时,无需指定版本号,父工程统一管理。变更依赖版本,只需在父工程中统一变更。

dependencyManagement只管理依赖版本,不会直接依赖,其它子项目想使用还需要导入依赖,只是版本号可以不用写
也可以再父工程中设置版本标签
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<properties>
<maven.compiler.source>18</maven.compiler.source>
<maven.compiler.target>18</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<lombok.version>1.18.34</lombok.version> //自定义属性名要有业务含意
<jwt.version>0.9.0</jwt.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
|


7.2.3.Maven聚合

只需要在聚合工程(父工程)的pom文件中添加各个子模块路径即可
1
2
3
4
5
6
|
<!--聚合其它模块-->
<modules>
<module>../tlias-pojo</module>
<module>../tials-utils</module>
<module>../tials</module>
</modules>
|
在父类的运行Maven打包命令即可

继承与聚合作用:聚合用于快速构建项目,继承用于简化依赖配置、统一管理依赖
继承与聚合相同点:聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
聚合与继承均属于设计型模块,并无实际的模块内容
7.3.Maven私服
私服配置说明.md