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 中,可以通过浏览器查看。

相关推荐
兆子龙13 小时前
ahooks useRequest 深度解析:一个 Hook 搞定所有请求
java·javascript
兆子龙13 小时前
React Suspense 从入门到实战:让异步加载更优雅
java·javascript
咕白m62516 小时前
Java 实现 Excel 转 HTML:完整示例
java
RealPluto16 小时前
Spring AOP 失效排查
java·spring
码路飞17 小时前
热榜全是 OpenClaw,但我用 50 行 Python 就造了个桌面 AI Agent 🤖
java·javascript
Nyarlathotep011317 小时前
LinkedList源码分析
java·后端
用户83071968408217 小时前
Java 告别繁琐数据统计代码!MySQL 8 窗口函数真香
java·sql·mysql
带刺的坐椅18 小时前
SolonCode v0.0.20 发布 - 编程智能体(新增子代理和浏览器能力)
java·ai·agent·solon·solon-ai·claude-code·openclaw
会员源码网19 小时前
数字格式化陷阱:如何优雅处理 NumberFormatException
java