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成功安装到本地库
相关推荐
小萌新上大分3 分钟前
java线程通信 生产者消费者,synchronized,,ReentrantLock,Condition(笔记备份)
java·多线程·lock·java线程间通信的方式·reentrantlock使用·生产者消费者问题java·java多线程与高并发
それども15 分钟前
Spring Bean 的name可以相同吗
java·后端·spring
墨雪不会编程18 分钟前
C++ string 详解:STL 字符串容器的使用技巧
java·开发语言·c++
Lucky GGBond19 分钟前
实践开发:老系统新增字段我是如何用枚举优雅兼容历史数据的
java
Nautiluss22 分钟前
一起玩XVF3800麦克风阵列(十)
linux·人工智能·python·音频·语音识别·实时音视频·dsp开发
悲喜自渡72122 分钟前
Python 编程(gem5 )
java·linux·开发语言
不怕犯错,就怕不做44 分钟前
RK3562 +RK817的dts布尔属性解析(uboot基础知识)
linux·驱动开发·嵌入式硬件
xing-xing1 小时前
JVM 内存、直接内存、系统内存、本地内存、物理内存总结
java·jvm
yangpipi-1 小时前
《C++并发编程实战》第5章 C++内存模型和原子操作
android·java·c++
广州灵眸科技有限公司2 小时前
瑞芯微(EASY EAI)RV1126B 音频输入
linux·开发语言·网络·音视频