Maven 笔记
-Maven 笔记.
Maven
1. 核心概念
1.1 约定
Maven其实就是约定了项目的一些结构:
1 | ├─src |
1.2 坐标(gav)
用于唯一定义一个Maven项目的, 主要由:
1 | <groupId></groupId> 组织名, 通常是公司或组织域名倒序+项目名 |
三部分组成.
1.3 依赖(dependency)
想要导入相关的依赖包, 在pom.xml添加对应依赖的坐标:
比如导入gson的依赖:
1 | <dependency> |
1.4 仓库(Repository)
存放jar包, Maven插件(其实也就是jar包)等的地方. 有本地仓库, 中央仓库, 私服等区分.
1.5 命令
通过命令完成项目的构建.
- mvn clean: 清理target目录
- mvn compile: 编译程序后放到target目录中
- mvn test: 单元测试, 使用junit测试src/main/java目录中的程序是否符合要求
- mvn package: 打包, 一般打包成jar或者war
- mvn install: 把jar, war安装到本机仓库中
1.6 生命周期
一个典型的Maven构建(build)生命周期的阶段:
validate -> compile -> test -> package -> verify -> install -> deploy
一般直接执行后面的插件, 前面的生命周期也会被执行.
1.7 依赖范围
dependency可以设置scope标签, 为其依赖范围:
- compile: 默认范围, 也就是程序每个生命周期都需要.
- test: 只在测试过程(test)中起作用的依赖.
- provided: 提供者, 在编译测试时需要, 但是打包(package)安装(install)时不需要(比如说我要部署到tomcat, 这时servlet相关依赖可以不用, 因为环境提供了).
1.8 常用属性
当一些依赖版本号类似时, 可以提取出来作为全局的属性.
1 | <properties> |
1.9 资源插件
默认情况下mvn compile命令会把src/main/resources下的文件拷贝到target/classes目录中, 对于src/main/java目录下的非.java文件不做处理. 如果需要处理就需要使用相关的插件.