1、基础配置
<groupId>com.company</groupId>
<artifactId>project</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<modules>
<module>demo</module>
</modules>
<properties>
<java.version>1.8</java.version>
</properties>
- groupId:工程ID
- artifactId:工程的模块ID
- version:版本号
- packaging:打包类型,默认是jar,还有war、ear、pom等
- modules:子工程的模块列表,相对路径
- properties:公共属性
2、依赖包配置
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<classifier></classifier>
<exclusions>
<exclusion/>
</exclusions>
<scope></scope>
<systemPath></systemPath>
<type></type>
<optional>true</optional>
</dependency>
- type:包类型,默认是jar,还有war、ear、pom等
- classifier:分类器,jar包版本号后面的字符串就是分类,比如
jarname-1.0.1-jdk8.jar
,jdk8就是分类 - exclusions:排除依赖,常用于解决依赖冲突
- scope:作用域
- compile:默认,会参与编译,以及后期的测试和运行周期
- provided:表示打包的时候可以不打进去
- runtime:类似compile,但是不会编译
- test:仅参与测试相关的工作
- system:类似provided,不过被依赖项不会从maven仓库下载,而是从本地系统拿取,需要配合
systemPath
使用
- systemPath:为system提供路径
- optional:为true时,依赖不会传递
3、依赖插件
<build>
<plugins>
<plugin>
<!-- 打包成可执行的jar -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goals></goals>
<dependencies></dependencies>
<executions></executions>
<extensions></extensions>
<inherited></inherited>
<configuration></configuration>
</plugin>
</plugins>
</build>
- goals:执行目标,每个插件都有自己的goal
- dependencies:插件所需要的额外依赖
- executions:在构建生命周期中执行一组目标的配置
- extensions:使用来自该项目的一系列构建扩展
- inherited:true表示传播给子POM
- configuration:插件配置
4、继承父 POM
<parent>
<groupId/>
<artifactId/>
<version/>
<relativePath/>
</parent>
- relativePath:父 POM 文件的相对路径,默认路径是../pom.xml
5、依赖包管理
子工程只需声明坐标就会继承此配置。
<dependencyManagement>
<dependencies>
<dependency/>
</dependencies>
</dependencyManagement>
6、依赖插件管理
子工程只需声明坐标就会继承次配置。
<build>
<pluginManagement>
<plugins>
<plugin/>
</plugins>
</pluginManagement>
</build>
7、常用命令
- mvn clean:清除maven的编译结果
- mvn compile:编译
- mvn package:编译、打包
- mvn install:编译、打包、部署
- –DskipTests:编译测试用例,但不执行测试
- -Dmaven.test.skip:不编译测试用例且不执行测试
- –Dcheckstyle.skip:不执行静态检查
- -U:强制更新snapshot类型jar包
- -T 4:4线程构建
- -T 1C:根据CPU核数每个核分配1个线程构建
- -v:显示版本信息
- -V:显示版本信息,不停止构建
- -o:离线模式
- -q:安静输出 - 仅显示错误
- -D:定义系统属性
- -X:生成执行调试输出
- -e:生成执行错误消息
- -N:不要递归到子项目中
- -nsu:禁止SNAPSHOT更新
- -P:要激活的以逗号分隔的配置文件列表
- -pl:以逗号分隔的指定反应堆项目列表
- -rf:从指定项目恢复反应堆
- 本地上传到私服:mvn deploy:deploy-file -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dfile=本地jar包路径 -DrepositoryId=releases/snapshots -Durl=仓库地址