14. 命令执行
Maven 的命令行执行方式提供了多种用于构建、测试、发布和管理项目的命令。通过命令行,可以控制构建的生命周期、激活特定的配置文件、指定属性等,这使得 Maven 在构建和发布管理中更具灵活性和可操作性。
Maven 命令格式如下:
mvn [options] [phases] [goals]
14.1 选项
-D:设置属性值,用于覆盖 POM 文件中的属性,或为插件配置传递参数。-P:激活一个或多个配置组,可以指定多个配置组,以逗号分隔。-f:指定 POM 文件的路径,默认路径为 ./pom.xml。-s:指定 settings.xml 的路径,用于覆盖默认的 Maven 设置。-X:启用调试模式,输出更详细的日志信息。-U:强制更新 SNAPSHOT 依赖项,从远程仓库下载最新版本的 SNAPSHOT。-o:离线模式运行,不会下载依赖。-T:设置构建的线程数来并行构建。
示例:
mvn clean install -DskipTests=true
mvn clean install -Pdev,prod
mvn clean install -f /path/to/project/pom.xml
mvn clean install -s /path/to/settings.xml
mvn clean install -X
mvn install -U
14.2 阶段
我们可以在命令行中提供阶段参数,通过生命周期阶段来触发绑定的插件目标的任务执行。生命周期阶段的执行,会触发该阶段的所有前置阶段的执行,因此 Maven 会按照顺序从生命周期的开头阶段依次执行,触发所有绑定的插件目标的执行。
下面是我们常用的一些阶段:
mvn validate:验证项目结构是否正确,必要的配置信息是否齐全。mvn compile:编译项目的源代码。mvn test:编译并运行测试代码。mvn package:打包编译后的代码,如生成 JAR 或 WAR 文件。mvn verify:运行任何集成测试,验证项目打包是否正确。mvn install:将打包的构件安装到本地仓库中,以供本地其他项目引用。mvn deploy:将打包的构件发布到远程仓库,以供共享。
我们可以提供多个阶段按序执行,注意这些阶段不应在同一个生命周期。也就是说,我们可以使用 mvn clean install site,它们会按命令行中给定的顺序执行 clean、default、site生命周期中的 clean、install、site 阶段:
- clean 阶段会触发 pre-clean 和 clean 按序执行,但不会执行 post-clean 阶段。
- install 阶段会触发 validate、initialize、...、verify、install 这些阶段按序执行,但不会执行 deploy 阶段。
- site 阶段会触发 pre-site 和 site 按序执行,但不会执行 post-site 和 site-deploy 阶段。
14.3 目标
除了通过生命周期来触发执行的话,我们还可以直接指定插件目标执行具体的任务。这样的话,即使插件目标没有绑定到生命周期阶段,我们也可以指定其执行以进行更为细粒度的操作。
例如:
mvn dependency:resolve:解析项目的依赖项并下载到本地仓库。mvn dependency:tree:显示项目中的直接和传递性依赖,帮助开发者了解每个依赖项是如何引入的。mvn help:effective-pom:输出当前项目的 pom.xml 的有效内容,包括父项目的继承和聚合。mvn help:effective-settings:查看 Maven 的 settings.xml 的有效配置。