Maven是一个项目管理和构建自动化工具,主要服务于基于Java的项目。它使用一个名为POM(Project Object Model)的XML文件来描述项目的构建过程、依赖、插件等信息。
肖哥弹架构 跟大家“弹弹” 高并发锁, 关注公号回复 ‘mvcc’ 获得手写数据库事务代码
欢迎 点赞,关注,评论。
关注公号Solomon肖哥弹架构获取更多精彩内容
历史热点文章
- 解锁大语言模型参数:零基础掌握大型语言模型参数奥秘与实践指南
- 高性能连接池之HikariCP框架分析:高性能逐条分解(架构师篇)
- 缓存雪崩/穿透/击穿/失效原理图/14种缓存数据特征+10种数据一致性方案
- Java 8函数式编程全攻略:43种函数式业务代码实战案例解析(收藏版)
- 一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
- 17个Mybatis Plugs注解:Mybatis Plugs插件架构设计与注解案例(必须收藏)
0、本节范围
1、maven 命令规则与实战
1.1 mvn 语法结构
Maven 的命令行语法基于一个简单的结构,允许你执行各种构建和依赖管理任务。以下是 Maven 命令的基本语法结构:
mvn [options] [<goal(s)>] [<phase(s)>]
各部分解释:
[options]
: 可选参数,用于修改 Maven 命令的行为。例如,-U
用于更新依赖,-X
用于调试。[<goal(s)>]
: Maven 插件的目标。这指定了要执行的任务,例如compile
、test
、install
等。[<phase(s)>]
: Maven 构建生命周期的阶段。Maven 会按照生命周期的阶段顺序执行任务,但你也可以指定特定的阶段来执行。
下是这些参数的一些常见值和选项:
[options]
- Maven 命令行选项
Maven 命令行选项用于修改 Maven 的行为。这些选项通常以 -D
或 -U
等形式出现:
-U
,--update-snapshots
: 强制检查并更新项目的快照依赖。-X
,--debug
: 运行 Maven 在调试模式下,提供详细的调试信息。-e
,--error-stack
: 打印错误栈信息。-ff
,--fail-fast
: 在第一个构建失败时停止构建。-q
,--quiet
: 仅打印错误信息。-T
,--thread
: 指定构建时使用的线程数。-Dproperty=value
: 设置一个属性值。-P
,--profile
: 指定要激活的 Maven 配置文件。
[<goal(s)>]
- Maven 插件目标
Maven 插件目标定义了要执行的具体任务。这些目标由 Maven 插件提供,例如 compile
、test
等:
clean
: 清理构建产物。compile
: 编译源代码。test
: 运行测试。install
: 安装构建产物到本地仓库。deploy
: 将构建产物部署到远程仓库。site
: 生成项目文档和报告。jar:jar
: 创建 JAR 文件。war:war
: 创建 WAR 文件。
除了这些核心目标,还有许多其他目标由各种 Maven 插件提供。例如:
maven-compiler-plugin:compile
: 使用编译插件编译 Java 代码。maven-surefire-plugin:test
: 使用 Surefire 插件运行单元测试。maven-jar-plugin:jar
: 使用 JAR 插件创建 JAR 文件。maven-war-plugin:war
: 使用 WAR 插件创建 WAR 文件。
[<phase(s)>]
- Maven 构建生命周期阶段
Maven 构建生命周期阶段定义了 Maven 在构建过程中的各个阶段:
validate
: 验证项目可以被构建。initialize
: 初始化构建。generate-sources
: 生成源代码。process-sources
: 处理源代码。generate-resources
: 生成资源文件。process-resources
: 复制并处理资源文件到目标目录。compile
: 编译项目的源代码。process-classes
: 处理编译生成的类文件。generate-test-sources
: 生成测试源代码。process-test-sources
: 处理测试源代码。generate-test-resources
: 生成测试资源。process-test-resources
: 复制并处理测试资源文件到目标目录。test-compile
: 编译测试源代码。process-test-classes
: 处理测试编译生成的类文件。test
: 运行测试。prepare-package
: 准备打包。package
: 将编译的代码打包成 JAR、WAR 或其他格式。pre-integration-test
: 在集成测试执行之前准备。integration-test
: 执行集成测试。post-integration-test
: 集成测试执行之后的工作。verify
: 验证包是否符合质量标准。install
: 安装包到本地仓库。deploy
: 将最终的包部署到远程仓库。
这些阶段反映了 Maven 的标准构建生命周期,每个阶段都可以执行一系列预定义的任务。
1.2 mvn 常用命令
1.2.1. 构建项目
mvn clean
: 清理项目,删除target
目录。mvn compile
: 编译项目的源代码。mvn test
: 运行单元测试。mvn package
: 打包项目。mvn verify
: 运行所有检查,确保项目可以部署。mvn install
: 安装项目到本地仓库。mvn deploy
: 将项目部署到远程仓库。
1.2.2. 生成项目报告
mvn site
: 生成项目报告。mvn javadoc:javadoc
: 生成 JavaDoc 文档。mvn surefire-report:report
: 生成测试报告。
1.2.3. 项目信息
mvn dependency:tree
: 显示项目的依赖树。mvn dependency:list
: 列出项目的所有依赖。mvn archetype:generate
: 生成一个新的 Maven 项目。
1.2.4. 项目配置
mvn versions:display
: 显示项目的版本信息。mvn versions:use
: 升级或降级项目的依赖版本。
1.2.5. 运行和管理
mvn exec:java
: 运行主类。mvn tomcat7:run
: 运行项目在 Tomcat 服务器上。mvn jetty:run
: 运行项目在 Jetty 服务器上。
1.2.6. 其他
mvn help:effective-pom
: 显示项目的有效的 POM。mvn help:describe
: 描述一个 Maven 目标。mvn enforcer:enforce
: 执行 Maven 强制规则。
1.2.7. Maven 插件命令
每个 Maven 插件可以提供自己的目标(goals),你可以通过 mvn <groupId>:<artifactId>:<goal>
格式调用它们。
案例
要获取 Maven 项目中所有可用命令的列表,你可以使用以下命令:
mvn help:describe -Dcmd=list
要获取特定 Maven 插件的可用目标列表,可以使用:
mvn <groupId>:<artifactId>:help
例如,要获取 maven-compiler-plugin
的帮助信息,可以使用:
mvn org.apache.maven.plugins:maven-compiler-plugin:help
1.3 mvn 命令格式
Maven 命令格式说明
- Maven 命令: 执行 Maven 构建的工具。
- [options] : Maven 命令行选项,用于修改 Maven 的行为(例如
-U
,-X
)。 - [goal] : Maven 插件的目标。
- [phase] : Maven 构建生命周期的阶段。
- [plugin-group] : Maven 插件的组ID。
- [plugin-artifact] : Maven 插件的项目ID。
- [plugin-version] : Maven 插件的版本。
- [plugin-goal] : 要执行的 Maven 插件目标。
- project coordinates: 项目坐标,包括 groupId、artifactId、version,以及可选的分类器(Classifier)。
案例
一个完整的 Maven 命令可能看起来像这样:
mvn org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile -DskipTests
mvn
: Maven 命令。org.apache.maven.plugins
: 插件的 groupId。maven-compiler-plugin
: 插件的 artifactId。3.8.1
: 插件的 version。compile
: 要执行的插件目标(goal)。-DskipTests
: 一个命令行选项,用来跳过测试。
或者,对于 Maven 内置的生命周期阶段,命令可能更简单:
mvn clean install
clean
: 生命周期的阶段,相当于执行mvn clean:clean
。install
: 另一个生命周期的阶段。
这个结构图提供了 Maven 命令的详细视图,展示了 Maven 命令的各个组成部分和它们之间的关系,并使用了不同的颜色来区分各个部分。
1.4 mvn 命令特殊格式
为什么有时有冒号,有时没有?
- 没有冒号: 当你只指定
<goal>
时,通常不需要冒号。这种情况通常发生在该<goal>
属于一个在 Maven 中已经通过<groupId>
和<artifactId>
定义的插件时。 - 有冒号: 当你需要指定完整的插件坐标(
<groupId>:<artifactId>:<goal>
)时,冒号用于分隔这些部分。
案例说明
- mvn clean: 这个命令使用
maven-clean-plugin
插件的clean
目标。因为clean
目标是 Maven 核心插件的一部分,所以不需要指定完整的坐标。 - mvn compile: 类似于
mvn clean
,这个命令使用maven-compiler-plugin
插件的compile
目标。 - mvn test: 这个命令执行
maven-surefire-plugin
插件的test
目标。 - mvn package: 使用
maven-jar-plugin
插件的jar
目标。 - mvn verify** 标签:架构设计,插件,Maven,构建,模块,图解,maven,mvn From: https://blog.csdn.net/alises1314/article/details/142764897