maven -pl -am -amd

maven常见命令之 -pl -am -amd

昨天maven的deploy任务需要只选择单个模块并且把它依赖的模块一起打包,第一时间便想到了-pl参数,然后就开始处理,但是因为之前只看了一下命令的介绍,竟然花了近半小时才完全跑通,故记录此文。

假设现有项目结构如下

dailylog-parent

|-dailylog-common

|-dailylog-web

  • 三个文件夹处在同级目录中
  • dailylog-web依赖dailylog-common
  • dailylog-parent管理dailylog-common和dailylog-web。

根据资料已知:

参数 全称 释义 说明
-pl --projects Build specified reactor projects instead of all projects 选项后可跟随{groupId}:{artifactId}或者所选模块的相对路径(多个模块以逗号分隔)
-am --also-make If project list is specified, also build projects required by the list 表示同时处理选定模块所依赖的模块
-amd --also-make-dependents If project list is specified, also build projects that depend on projects on the list 表示同时打包依赖该模块的模块
-N --Non-recursive Build projects without recursive 表示不递归子模块
-rf --resume-from Resume reactor from specified project 表示从指定模块开始继续处理

以下是在maven-3.3.9中的试验

  1. 在dailylog-parent目录运行mvn clean install -pl org.lxp:dailylog-web -am,结果

    • dailylog-common成功安装到本地库
    • dailylog-parent成功安装到本地库
    • dailylog-web成功安装到本地库

    该命令等价于mvn clean install -pl ../dailylog-web -am

  2. 在dailylog-parent目录运行mvn clean install -pl ../dailylog-common -am,结果

    • dailylog-common成功安装到本地库
    • dailylog-parent成功安装到本地库
  3. 在dailylog-parent目录运行mvn clean install -pl ../dailylog-common -amd,结果

    • dailylog-common成功安装到本地库
    • dailylog-web成功安装到本地库

    由于dailylog-parent并不依赖dailylog-common模块,故没有被安装

  4. 在dailylog-parent目录运行mvn clean install -pl ../dailylog-common,../dailylog-parent -amd,结果

    • dailylog-common成功安装到本地库
    • dailylog-parent成功安装到本地库
    • dailylog-web成功安装到本地库
  5. 在dailylog-parent目录运行mvn clean install -N,结果

    • dailylog-parent成功安装到本地库

    -N表示不递归,那么dailylog-parent管理的子模块不会被同时安装

  6. 在dailylog-parent目录运行mvn clean install -pl ../dailylog-parent -N,结果

    • dailylog-parent成功安装到本地库
  7. 在dailylog-parent目录运行mvn clean install -rf ../dailylog-common,结果

    • dailylog-common成功安装到本地库
    • dailylog-web成功安装到本地库
相关推荐
叼烟扛炮4 分钟前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
文丑颜不良啊9 分钟前
LeetCode2061~2080题目解析
java·leetcode
无人生还别怕32 分钟前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
无足鸟ICT1 小时前
【RHCA+】agedu命令(查看磁盘使用情况)
linux
特立独行的猫A1 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
StarsGreen1 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
Brookty1 小时前
Java博客项目实战|工程环境与构建:工程目录、PowerShell命令调用与JDK/IDEA/Maven工作机制
java·项目实战
zhengfei6111 小时前
CVE-2026-98432:Linux 内核 TCP 释放后重用漏洞,CVSS 9.8 但补丁覆盖极不均衡
linux·运维·tcp/ip
养军博客1 小时前
Spring Boot 3.x + Spring Security 6.x 整合 JWT 实战:jjwt 与 java-jwt 两种工具库详解
java·spring boot·springsecurity
TeamDev2 小时前
使用 JxBrowser 在桌面应用中集成 Spring
java·前端·后端·spring·混合应用·jxbrowser·浏览器控件