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

相关推荐
pupudawang3 分钟前
Java进阶——IO 流
java·开发语言·python
逆境不可逃5 分钟前
【从零入门23种设计模式19】行为型之观察者模式
java·开发语言·算法·观察者模式·leetcode·设计模式·动态规划
一只鹿鹿鹿6 分钟前
研发中心数据安全管理规定(文件)
java·运维·开发语言·数据库·后端
旺旺仙贝呦7 分钟前
Java常用注解
java·开发语言·python
忧郁缭绕9 分钟前
Spring Boot Pf4j模块化能力设计思考
java·spring boot·后端
天若有情67315 分钟前
C++设计模式:tur函数——让对象自我裁决的条件选择器
java·c++·设计模式
无级程序员15 分钟前
k8s部署nacos 3.1.1服务,java.net.UnknownHostException问题终极解决方案
java·nacos·kubernetes
C++chaofan15 分钟前
JUC 并发编程:不可变对象、享元模式与自定义连接池 学习笔记
java·享元模式·并发编程·连接池·juc·不可变对象
big_rabbit050222 分钟前
[算法][力扣242]有效的字母异位词
java·前端·leetcode
xcLeigh27 分钟前
复杂 SQL 过滤时机过晚?金仓基于代价的连接条件下推方案来了
java·数据库·sql语句·union·金仓·kingbasees