《Maven 实战》读书笔记(八) 反应堆

2024-09-03 17:18

本文主要是介绍《Maven 实战》读书笔记(八) 反应堆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 反应堆

反应堆这个名字听上去挺专业,其实就是多个模块组成的一个构建结构罢了,而单一模块项目自身就是该项目的反应堆。反应堆包含了各模块之间的依赖关系,从而Maven计算出合理的构建顺序。当然,反应堆计算出来的顺序都不能是一个“闭环”,比如说模块A的构建依赖于模块B,那么就回去构建模块B,但是构建模块B的过程中,经过反应堆分析,模块B的构建依赖于模块A,那么这就形成了一个构件的“闭环”。这样就会报错。到底是“鸡生蛋?还是蛋生鸡?”。

2. 剪裁反应堆

一般来说,开发者会构建整个项目,或者选择单独的模块进行构建。如果一切顺利的话,整体构建挺爽的。但是一旦整体构建发现某个模块构建失败。开发者发现问题,调整好后仅仅想构建这一个模块,这就叫做剪裁反应堆。在聚合项目根目录下执行如下语句

mvn clean install -pl ../MavenAccount-email 


代表仅仅构建聚合项目中的邮件模块,其他模块不动。

如下语句

mvn clean install -pl ../MavenAccount-email,../MavenAccount-persist


就是构建邮件模块、持久层模块。

-am:同时构建所列模块的依赖模块

-amd:同时构建依赖于所列模块的模块

-pl:构建指定模块

-rf:从指定的模块返回一个反应堆对象


mvn clean install -pl ../MavenAccount-email -am


输出如下

    [INFO] ------------------------------------------------------------------------  
[INFO] Reactor Summary:
[INFO]
[INFO] MavenAccount-aggregator ........................... SUCCESS [0.437s]
[INFO] MavenAccount-email ................................ SUCCESS [4.728s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.352s
[INFO] Finished at: Mon Jun 06 11:17:44 CST 2011
[INFO] Final Memory: 10M/25M
[INFO] ------------------------------------------------------------------------


代表先构建聚合模块,因为邮件模块依赖于聚合模块,因为它不仅仅是聚合模块,还是父模块。

mvn clean install -pl ../MavenAccount-email -amd  


构建MavenAccount-email完毕后,构建与MavenAccount-email依赖相关的所有模块

mvn clean install -rf ../MavenAccount-persist  


在原聚合项目的基础上得出的反应堆中构建MavenAccount-persist模块

3. 总结

剪裁反应堆是为了找到问题模块,分析问题后单独构建的,灵活使用反应堆命令可以快速构建大项目。尤其在项目十分庞大的时候,剪裁反应堆,显得十分重要。

这篇关于《Maven 实战》读书笔记(八) 反应堆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133556

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...