1. 简介
- Apache 公司的项目管理工具
- 为什么需要项目管理工具
- 管理项目中的多个模块之间的关系
- 获取、导入第三方的功能需要的jar包
- 管理jar包版本
- 管理jar包、驱动之间的依赖
- Maven做的工作
- 下载、导入jar包
- 管理jar包、版本、依赖关系
- 测试代码正确性,编译程序
- 打包jar、war文件
- 部署项目
- 安装maven
- 官网下载maven bin文件:http://maven.apache.org/download.cgi
- 解压缩
- bin:可执行文件 mvn.cmd
- conf:maven 工具本身的配置文件 settings.xml
- 配置系统环境变量
H2_HOME
= 解压缩目录- 将
%M2_HOME%\bin
加入 path 变量 - 也需要配置
JAVA_HOME
变量
- 验证:在CMD中,执行
mvn -v
2. 概念
- 项目构建
面向过程,完成项目代码的编译、测试、运行、打包、部署- 清理:删除项目编译内容,为新编译做准备
- 编译:与javac一次只编译一个文件不同,maven批量编译项目文件
- 测试:批量测试代码,验证功能
- 报告:生成测试结果文件
- 打包:把class文件、配置文件放到结果文件,通常是压缩文件中(java程序是 .jar;web应用程序对应的是 .war)
- 安装:将结果文件安装到本地仓库
- 部署:安装程序
POM(Project Object Model):
pom.xml
项目对象模型;通过 POM 的配置来控制项目构建的过程、管理jar包依赖- 结构
- 基本信息
1. modelVersion:版本号
2. groupId:公司域名倒写+项目名称
3. artifactId:模块名称
4. version:项目的版本号
5. packaging:项目打包的类型(可以不写,默认为jar,可选为) - 依赖信息
1. dependencies:项目中所需的资源说明,如驱动
2. dependency - 属性:properties
- 构建
- build:配置 maven 项目构建的参数,如配置JDK版本
1. plugins:配置插件
1. groupId
2. artifactId:配置插件的名称
3. version:配置插件版本
4. configuration:配置插件信息
1. source:编译环境
2. target:运行环境
- build:配置 maven 项目构建的参数,如配置JDK版本
- 继承:parent
- 聚合:modules
- 基本信息
约定目录结构```latex Project ├───src │ ├───main │ │ ├───java │ │ └───resource │ └───test │ ├───java │ └───resource └───pom.xml
<br />
1. 在 java文件中放程序包和包中的java文件,在resources中放置java程序所需的配置文件
2. 可以在 PowerShell 中使用 `tree dirName` 的命令以树形展示文件夹结构
3. 在项目文件夹下,在CMD中执行 `mvn compile` 可以一次性编译main文件夹中的全部java文件,在项目根目录中生成target目录(结果目录)
4. 第一次使用maven,需要下载插件(jar文件)到默认的maven本地仓库,可以用阿里镜像加快速度。在maven解压缩文件夹 /conf/settings.xml 文件中添加镜像配置```xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
- 在maven解压缩文件夹 /conf/settings.xml 文件中配置本地资源仓库
xml <localRepository>/path/to/local/repo</localRepository>
坐标(G-A-V)
- https://mvnrepository.com/ maven 仓库
- 即pom.xml文件中的 groupId,artifactId和version,用来唯一标识项目资源
- 依赖管理
- 通过 GVA 坐标,依次从本地-私服-镜像-中央仓库中查询所需的依赖资源
仓库管理
- 存放资源
- maven 使用的插件
- 项目使用的jar包
- 仓库的分类
- 本地仓库:PC本地存放jar文件的文件夹
- 远程仓库:需要连接网络访问下载
- 中央仓库
- 镜像(中央仓库的备份)
- 私服(局域网中的私人服务器)
- 查询访问资源的次序:本地 —> 私服 —> 镜像 —> 中央仓库
第一次使用maven,需要下载插件(jar文件)到默认的maven本地仓库,可以用阿里镜像加快速度。在maven解压缩文件夹 /conf/settings.xml 文件中添加镜像配置
xml <mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
在maven解压缩文件夹 /conf/settings.xml 文件中配置本地资源仓库所在路径(非中文文件夹名;存放jar包)
<localRepository>/path/to/local/repo</localRepository>
- 存放资源
生命周期:maven构建项目的过程
- 清理
- 编译
- 测试
- 报告
- 打包
- 安装
- 部署
- 插件和目标
- 插件:实际上执行maven项目构建的工具
- junit 框架:借助单元测试,批量地对类中的方法进行测试
- 在 pom.xml 中添加 JUnit 依赖
- 在 maven 项目中的 src/test/java/ 目录下创建测试程序
- 测试类的名称
Test + 类名称
- 测试方法名称
test + 方法名称
- 测试方法前加上注解
@Test
,必须是 public 修饰,不能有返回值
- 测试类的名称
- 继承
- 聚合
3. 工程
- Maven命令(清理-编译-测试-打包-部署)
mvn clean
:清理target结果目录,已经install 仓库中的包不会被删除mvn compile
:编译主程序 src/main/java/ 目录下的程序,生成target结果目录;而不编译 src/test/java/ 目录下的程序mvn test-compile
:编译测试程序,只编译 src/test/java/ 目录下的程序mvn test
:测试,生成surefire-reports
来保存测试结果;会先执行一遍mvn clean
,mvn compile
,mvn test-compile
,mvn package
:打包主程序(编译、编译测试、测试,按照pom.xml配置来打包为jar或war包)mvn install
:保存到本地仓库(也会将前面的流程走一遍)mvn deploy
:将工程保存到本地仓库、私服仓库,自动部署到 web容器中 - IDEA中的Maven配置
File-Settings-Build, Excution, Deployment-Build Tools-Maven
:使用自己安装的maven,需要覆盖idea中maven的安装目录- Maven Home Directory:从内置的
Bundled(Maven 3)
改为解压缩的目录 - User Settings File:覆盖为解码所目录下的配置文件
- Local Repository:
- Maven Home Directory:从内置的
File-Settings-Build, Excution, Deployment-Build Tools-Maven-Runner
- VM Options:archetypeCatalog=internal;maven项目创建时会联网下载模板文件,耗时较长,如此设置不用下载
- JRE:选择 JDK
File-New Porject Settings-Settings for New Project
中进行相同的操作,为新工程进行配置maven
- Idea中创建项目
File-New Project-Empty Project
定义好项目名后,确定File-New Module-Maven
- 选择 Project SDK
- 勾选 Create from archetype;找到 maven-archetype-quickstart;点 next
- 填写module 的 Name
- 在Properties 中填写 GroupId:公司名倒写
- 在 src/main/ 和 src/test/ 文件夹下放置 resources 文件夹,并且
Mark Directory as
为对应的资源目录 - 测试类中的测试函数
- 带
@Test
注解 - 必须是 public,不能是 static;
- 不能有输出,返回void类型;
- 不能传参
- 带
- 创建 Java Web 文件
- 同上,创建空项目
- 创建Maven module
- 勾选 Create from archetype;找到 maven-archetype-webapp;点 next
- 在 src/main/ 文件夹下放置 resources 文件夹,并且
Mark Directory as
为对应的资源目录
4. 管理
依赖范围
<scope></scope>
标识;- scope字段的值包括
- compile(默认):参与主程序、测试程序、打包、部署
- provided:仅对主程序、测试程序有效;使用者(服务器)自己提供,本地不用准备,package打包的时候不会对该插件进行打包
- runtime
- test:仅参与测试程序
- system
- import
5. 设置
- 属性设置```xml
UTF-8 1.7 1.7 5.2.8
2. 全局变量
1. 声明:在 `<properties></properties>`中,通过自定义标签声明变量
2. 使用:在 pom.xml 文件其他位置,使用 `${标签名}`使用变量的值
3. 资源插件```xml
<build>
<finalName>test</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
- 未设置 resources的时候,maven执行编译
- 会将 src/main/resources 目录中的文件拷贝到 target/classes 目录下
- 会将 src/main/java 目录中的文件不会被拷贝到 target/classes 目录下
- 如果需要在maven执行编译的时候,将src/main/java目录中的文件被拷贝到 target/classes 目录下,需要在
<build>
中 加入<resources>