基本概念刚开始打算学Java框架,项目管理就来了,Spring视频的第一个就是Maven,我就来了
概念:基于Java平台的自动化构建工具
maven的作用
- 管理jar包
- 增加第三方jar包
- 管理jar之间的依赖关系:自动关联下载所有依赖的jar包
- 将项目拆分为若干个模块
maven构建步骤:
- 清理:删除编译的结果,为重新编译做准备
- 编译:生成字节码文件(.class)
- 测试:针对于项目中的关键点进行测试
- 报告:将测试的结果进行显示
- 打包:将项目中包含的多个文件,压缩成一个文件,用于安装或部署
- 安装:将打包后的文件放到本地仓库,供其他项目使用
- 部署:将打包后的文件.war或者jar放到服务器上准备运行
下载和配置
配置环境
JAVA_HOME MAVEN_HOME PATH # 查看配置是否成功 mvn -v Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537) Maven home: F:apache-maven-3.8.4-binapache-maven-3.8.4 Java version: 17.0.1, vendor: Oracle Corporation, runtime: D:JDK Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
jar包里面存放的是经过编译后的.class字节码文件,一般jar名是模块名
配置本地仓库
xxx
默认本地仓库:C:/User/YANQUN/.m2/repository
maven约定的目录结构
project src --源代码目录 main --程序功能目录 Java --Java代码 resource --资源代码、测试代码 test --测试目录 Java resource pom.xml --项目对象模型 target --目标文件
pom.xml主要选项:
-
groupId:域名反转.总项目名
-
artifactId:本模块名(该模块相当于总项目是一个子模块),一般根据该名字生成的jar包
-
version:当前版本号
-
dependency:配置依赖包信息。依赖包的信息配置,会去本地仓库或者中央仓库找
xxx xxx xx xxx xxx xxx xx xxx 其中scope有三种方式:compile、test、provided,默认是compile,表示的是该jar包的使用方式
compile test provided 主程序 √ × √ 测试程序 √ √ √ 部署(运行) √ × ×
执行mvn:必须在pom.xml目录执行
常见命令# 编译程序,只编译main中程序 mvn compile # 编译测试程序 mvn test # 打包 mvn package # 将开发的模块放入本地仓库供其他模块引用 mvn install # 清除target目录 mvn cleanMaven高级
依赖
-
依赖的范围、依赖的有效性
-
依赖排除
xxx xxx -
依赖的传递性(必须是compile)
-
依赖原则:路径最短优先原则、路径长度相同
Maven命令的生命周期:
- maven resources
- maven compile:编译main目录
- maven test:编译test目录
- maven package:打包
这些都是一步步执行的,后一步的执行必须依赖于前一步的执行,也就是说,不可单独执行
生命周期包含的阶段:
-
clean lifecycle:清理
-
default lifecycle:默认(默认)
- compile:编译项目的源代码
- test-compile:编译测试源代码
- test:使用合适的单元测试框架运行测,这些测试框架不会被打包和部署
- package:接收编译好的代码,打包成可发布的格式,jar或者war
- install:将包安装至本地仓库,以便其他项目依赖
-
site lifecycle:站点
整合两个模块:先把其中一个放到本地仓库或者中央仓库,然后添加依赖即可
继承
子工程继承父工程(一般父工程只做依赖相关的,不写代码)
新建的时候Package设置为pom格式
xxx xxx xxx pom xxx xxx xxx compile xxx xxx
此时子工程
xxx xxx xxx xxx ../B/pom.xml
聚合
Maven能够识别的项目:自身包含,本地仓库中的
在一个总工程中配置聚合,聚合的配置只能配置在(打包方式为pom)的Maven工程中
../Maven_01 ../Maven_02
配置完聚合之后,以后只要操作总工程,则会自动操作更改聚合中配置过的工程
总结
聚合:Maven将一个大工程拆分为若干个子工程(子模块),聚合可以将拆分为多个子工程合起来
继承:父->子,可以通过父工程,统一管理依赖的版本
其他操作- intellij中配置maven



