Maven--反应堆(Reactor)
在一个多模块的 Maven 项目中,反应堆是指所有模块组成的一个构建结构。对于单模块的项目,反应堆就是该模块本身。但对于多模块项目来说,反应堆就包含了各模块之间继承与依赖的关系,从而能够自动计算出合理的模块构建顺序。
模块间的依赖关系会将反应堆构成一个有向非循环图(Directed Acyclic Graph, DAG),各个模块是该图的节点,依赖关系构成了有向边。这个图不允许出现循环,因此,当出现模块 A 依赖于 B,而 B 又依赖于 A 的情况时,Maven 就会报错。
一般来说,用户会选择构建整个项目或者选择构建单个模块,但有些时候,用户会想要仅仅构建完整反应堆中的某些个模块。换句话说,用户需要实时地裁剪反应堆。
Maven 提供了很多的命令行选项支持裁剪反应堆,输入 mvn -h 可以看到这些选项:
可以使用 -pl 选项指定构建某几个模块
mvn clean install -pl moduleA,moduleB,...
使用 -am 选项可以同时构建所列模块的依赖模块
mvn clean install -pl moduleA -am
如果 moduleA 依赖了 moduleB,这里就会构建 moduleB 和 moduleA
使用 -amd 选项可以同时构建依赖于所列模块的模块
mvn clean install -pl moduleA -amd
如果 moduleB 和 moduleC 依赖于 moduleA,这里就会构建 moduleA,moduleB 和 moduleC
使用 -rf 选项可以在完整的反应堆构建顺序基础上指定从哪个模块开始构建
mvn clean install -rf moduleA
如果该完整的反应堆构建顺序中,moduleA 位于第三,那么就从moduleA 开始构建一直到最后的模块,moduleA 之前的模块不构建。
在 -pf -am 或者 -pl -amd 的基础上,还能应用 -rf 参数,以对裁剪后的反应堆再次裁剪。
mvn clean install -pl moduleA -amd -rf moduleB
如果 moduleB 和 moduleC 依赖于 moduleA,这里就会构建 moduleB 和 moduleC
Maven--反应堆(Reactor)的更多相关文章
- 笔记:Maven 反应堆
在一个多模块的Maven项目中,反应堆(Reactor)是指所有模块组成的一个构建结构,对于单个模块的项目,反应堆就是该模块本身,但对于多模块项目来说,反应堆就包含了各模块之间继承与依赖的关系,从而能 ...
- 反应堆Reactor
mvn -h 可以看到很多命令及其用途:-am --also-make 同时构建所列模块的依赖模块:-amd -also-make-dependents 同时构建依赖于所列模块的模块:-pl --pr ...
- 转: maven进阶:一个多模块项目
一个多模块项目通过一个父POM 引用一个或多个子模块来定义.父项目,通过以下配置,将子项目关联. <packaging>pom</packaging> <modules& ...
- 1-2 maven学习笔记(7-8章)
一,生命周期和插件 1.除了坐标.依赖和仓库之外,maven的另外两个核心概念就是声明周期和插件. 生命周期和插件协同工作,密不可分. 清理 初始化 编译 测试 打包 集成测试 验证 部署 站点生成 ...
- Maven 进阶
一.Maven 版本管理 Maven 的推荐版本号约定为:主版本号.次版本号.增量版本号-<里程碑版本> 开发中的版本要以 -SNAPSHOT 结尾,因为这种快照版本是支持 jar 包被覆 ...
- 06 Maven 聚合和继承
Maven 聚合和继承 1. 聚合 2. 继承 <parent> <groupId>org.apache.karaf.demos</groupId> <art ...
- maven进阶:一个多模块项目
一个多模块项目通过一个父POM 引用一个或多个子模块来定义.父项目,通过以下配置,将子项目关联. <packaging>pom</packaging> <modules& ...
- 《Maven实战》笔记-5-pom聚合和继承
一.聚合 假设有两个模块:account-email和account-persist: 能够使用一条命令就能构建上述两个模块,需要创建一个额外的模块:account-aggregator: 通过acc ...
- 《Maven实战》(许晓斌)导读(读书笔记&第二次读后感)
第一章 Maven简介 Maven是构建工具,但同时还是jar包管理工具.项目信息管理工具 与Make.Ant比较,更为先进 第二章 Maven的安装和配置 Windows和Unix上安装都很简单,下 ...
- Maven系列第8篇:你的maven项目构建太慢了,我实在看不下去,带你一起磨刀!!多数使用maven的人都经常想要的一种功能,但是大多数人都不知道如何使用!!!
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第8篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...
随机推荐
- Acwing198 反素数
原题面:https://www.acwing.com/problem/content/200/ 题目大意:对于任何正整数x,其约数的个数记作g(x),例如g(1)=1.g(6)=4.如果某个正整数x满 ...
- GNS3 ip route 命令解析
ip route 120.94.0.0 255.254.0.0 172.16.252.1ip route 192.168.0.0 255.255.0.0 10.10.10.119ip route 21 ...
- JS 三大难点
1,作用域链 2,原型链 3,闭包
- Sublime和Python中文编码的一些问题
Windows下的控制台中,应该是这样的逻辑: 1.如果是Unicode字符串的话,首先根据控制台编码进行转换 2.之后进行输出 所以在Windows控制台下,假设str = u'中文', 1.直接p ...
- html 如何使表格一列都变颜色的简单方法!!
html怎么让一列变颜色用到属性colgroup 重点我都加粗了!! <colgroup span="3" bgcolor="yellow">&l ...
- Python MySQL Select
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- (排序EX)P1583 魔法照片
题解: 需要注意的是,快排完之后并不是按照编号从小到大的顺序输出 #include<iostream>using namespace std;int r=0;void swap(int & ...
- P5091 【模板】欧拉定理(欧拉降幂)
P5091 [模板]欧拉定理 以上3张图是从这篇 博客 里盗的,讲的比较清楚. #include<bits/stdc++.h> using namespace std; typedef l ...
- 15 —— npm —— package.json 与 package-lock.json 的作用
一,package.json 是 npm init 时创建的一个文件,会记录当前整个项目中的一些基础信息. 二,package-lock.json 是 node_modules 文件夹或者 pack ...
- 【LeetCode】克隆图
[问题]给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆).图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node]). 解释: 节点 的值是 ,它有两个邻居:节点 和 ...