Maven常用命令
# 清理
mvn clean
# 编译主程序
mvn compile
# 编译测试程序
mvn test-compile
# 执行测试
mvn test
# 打包
mvn package
# 安装
mvn install
# 生成站点
mvn site
坐标
在Maven中,由groupid、artifactid、version来唯一确定一个Maven工程。
仓库
仓库分类
- 本地仓库
- 远程仓库
- 私服
- *仓库
- *仓库镜像
仓库中保存的内容:Maven工程
- Maven自身所需要的插件
- 第三方框架或工具的jar包
- 我们自己开发的Maven工程
依赖
Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。对于我们自己开发的Maven工程,使用mvn install
命令安装后就可以进入仓库。
依赖的范围
- compile
- test
- provided
依赖的范围 | 对主程序是否有效 | 对测试程序是否有效 | 是否参与打包 | 是否参与部署 |
---|---|---|---|---|
compile | 有效 | 有效 | 参与 | 参与 |
test | 无效 | 有效 | 不参与 | 不参与 |
provided | 有效 | 有效 | 不参与 | 不参与 |
compile和provided比较:compile在开发、部署、运行阶段都提供依赖,provided只在开发阶段提供依赖。
依赖具有传递性。非compile范围的依赖不能传递。
依赖排除:使用exclusions排除不需要的jar包。
依赖原则(解决工程之间的jar包冲突)
- 路径最短者优先
- 路径相同时先声明者优先
统一管理jar包的版本
- 在properties标签内使用自定义标签统一声明版本号
- 在需要统一版本的位置,使用
${自定义标签名}
引用声明的版本号
继承
- 创建一个Maven工程作为父工程,打包方式为pom
- 在子工程中声明对父工程的引用
- 由父工程统一管理依赖,子工程添加依赖时无需指定版本
聚合
- 一键安装各个模块工程
- 在总的聚合工程中的pom.xml文件使用
modules
标签配置即可
生命周期
Maven生命周期定义了各个构建环节的执行顺序。
Maven有三套相互独立的生命周期
- Clean Lifecycle:在进行真正的构建之前进行一些清理工作
- Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等
- Site Lifecycle:生成项目报告、站点,发布站点
插件和目标
- 生命周期的各个阶段仅仅定义了要执行的任务是什么
- 各个阶段和插件的目标是相对应的
- 相似的目标由特定的插件来完成
自动部署
pom.xml文件
<!-- 配置构建过程中的特殊设置 -->
<build>
<finalName>web</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.2.3</version>
<configuration>
<!-- 当前系统中容器的位置 -->
<container>
<cotainerId></cotainerId>
</container>
<!-- 端口号 -->
<properties>
<cargo.servlet.port>8001</cargo.servlet.port>
</properties>
</configuration>
<!-- 插件在什么情况下执行 -->
<executions>
<execution>
<id>cargo-run</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
命令mvn deploy