Maven 常用命令

文章目录

Maven 常用命令

确保环境已配置

安装 Maven:确保系统已安装 Maven 并正确配置了 MAVEN_HOME 和 PATH。

安装 JDK:确保系统安装了支持的 JDK 并设置了 JAVA_HOME。

测试安装是否正确:

bash 复制代码
mvn -v

常见的项目结构:

bash 复制代码
parent-project/
├── pom.xml (父模块)
├── module-a/
│   └── pom.xml (子模块 A)
└── module-b/
    └── pom.xml (子模块 B)

父模块的 pom.xml 应包含以下内容:

xml 复制代码
<modules>
    <module>module-a</module>
    <module>module-b</module>
</modules>

指定打包子模块

在 Maven 多模块项目中,如果只想打包特定的子模块,可以使用以下方法:

  1. 直接进入子模块目录
    进入目标子模块的目录后运行打包命令:
shell 复制代码
cd parent-project/module-a
mvn clean package
  1. 使用 -pl 参数指定模块
    在父项目目录下使用 -pl 参数指定需要打包的子模块,同时使用 -am 参数(可选)构建其依赖模块:
shell 复制代码
mvn clean package -pl module-a
  • -pl:指定要构建的模块列表(用逗号分隔多个模块)。
  • -am(可选):自动构建模块的依赖模块。

查看依赖关系

查看依赖树

使用 dependency:tree 查看依赖树

复制代码
mvn dependency:tree

输出示例:

text 复制代码
[INFO] --- maven-dependency-plugin:3.5.0:tree (default-cli) ---
[INFO] com.example:my-module:jar:1.0.0
[INFO] +- org.springframework:spring-core:jar:5.3.6:compile
[INFO] \- org.slf4j:slf4j-api:jar:1.7.30:compile

关键点:

  • +:直接依赖。
  • -:传递性依赖(由直接依赖引入)。
  • Scope:依赖的范围,如 compile, test, provided, runtime。

分析冲突的依赖

如果怀疑有依赖冲突问题,可以使用 dependency:tree 加 verbose 模式:

复制代码
mvn dependency:tree -Dverbose

输出示例(详细版本信息和冲突):

text 复制代码
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.14.0:compile
[INFO] \- org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO]    \- (org.slf4j:log4j-over-slf4j:jar:1.7.30:compile - omitted for conflict with 1.7.25)

生成依赖报告

运行以下命令生成 HTML 格式的依赖报告:

bash 复制代码
mvn project-info-reports:dependencies

输出位置:

报告会生成在 target/site/dependencies.html 中,可以通过浏览器查看。

相关推荐
g***B73821 小时前
Java 工程复杂性的真正来源:从语言设计到现代架构的全链路解析
java·人工智能·架构
期待のcode1 天前
MyBatisX插件
java·数据库·后端·mybatis·springboot
醇氧1 天前
【Windows】优雅启动:解析一个 Java 服务的后台启动脚本
java·开发语言·windows
sunxunyong1 天前
doris运维命令
java·运维·数据库
菜鸟起航ing1 天前
Spring AI 全方位指南:从基础入门到高级实战
java·人工智能·spring
古城小栈1 天前
Docker 多阶段构建:Go_Java 镜像瘦身运动
java·docker·golang
MapGIS技术支持1 天前
MapGIS Objects Java计算一个三维点到平面的距离
java·开发语言·平面·制图·mapgis
Coder_Boy_1 天前
业务导向型技术日志首日记录(业务中使用的技术栈)
java·驱动开发·微服务
盖世英雄酱581361 天前
springboot 项目 从jdk 8 升级到jdk21 会面临哪些问题
java·后端
济南壹软网络科技有限公司1 天前
企业级盲盒系统:Java高并发架构在多元化抽奖电商中的设计与实践
java·架构·开源源码·盲盒源码·盲盒h5·盲盒app