亡羊补牢---Maven的约定和反应堆

article/2023/6/4 15:59:05
[url=http://logdown.com/account/posts/166939-questions-must-expose-maven-conventions-and-reactors/preview][color=red][size=x-large][b]logdown博文地址[/b][/size][/color][/url]

不得不说,时间过得还真挺快的,两个月的时间一下过去了,向日葵也从小小的瓜子长到了40厘米高。前些天我给向日葵松土时候发现,两株向日葵的根已经纠缠到了一块。最早我预想的是等他们长大后就立马迁移让他们分开成长,但是过程中各种原因,一直把这个事情搁置着,最后酿成这样的结果。
我只好强行将他们分开,当然扯断了一些根,希望没有伤害到他们。迁移完之后还连下了好多天的雨,没有阳光呵护,真不知道他们是否能度过难关。
Late equals never,很多事情都是拖延就代表不做,一拖再拖,只有等问题主动暴露的时候,才亡羊补牢。生活中处处都需要主动的去跟踪问题发现问题,项目管理中更是。由于我最近琐事繁多,所以也都把问题暴露过于依赖在每天早上的站会上,这样会导致隔了一个晚上,问题已经暴露的过晚了,甚至很多问题就被遗忘了。因此,我觉得最好的方式应该是每天快下班的时候跟踪下今天各自的任务是否完成,未完成的是任务延后还是赶工(你没猜错,就是加班,说的好听点才特么叫赶工)处理。
------------分割线-------------
[size=x-large][b]1 约定[/b][/size]
[size=medium][b]1.1 约定优于配置[/b][/size]
想要灵活那必然会增加复杂度,因此,Maven中基本都是使用约定的方式来完成。Maven提倡的是约定优于配置。
个人不是很喜欢这种约束,也不是为了耍个性,就像java用强制类型来增加语法的规范性,但是这就导致了java语言的局限性,类型不匹配连编译都过不了,更别说动态什么的了。

<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
……
</build>


这里就不对每个属性做过多介绍了,我相信大家也都看得懂意思。
这些都是约定的目录,当然也可以在每个项目的pom.xml中覆写来改变位置。除了这些,还有默认打包方式是jar(如果要打包war,就需要在pom.xml中指定),中央仓库的地址等等。
[size=medium][b]1.2 超级POM[/b][/size]
对于Maven3,该文件的地址为:%MAVEN_HOME%\apache-maven-3.0.5\lib\maven-model-builder-3.0.5.jar\org\apache\maven\model\pom-4.0.0.xml,有兴趣的可以自己把这个pom翻出来看,但是不是很建议修改,这样你可以构建的maven项目,在别人机器上就无法构建了。
[code]

[INFO] Scanning for projects...
[INFO] ----------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Account Parent
[INFO] Account Email
[INFO] Account Persist
[INFO] Account Captcha
[INFO] Account Service
[INFO] Account Web

[/code]
[size=x-large][b]2 反应堆[/b][/size]
在一堆项目中,反应堆就是构建结构。所以对于单模块来说,反应堆就是他本身。
反应堆应当包括各模块之间继承和依赖的关系,从而自动计算出合理的模块构建顺序。
[size=medium][b]2.1 构建顺序[/b][/size]
[i][b]两个原则:[/b][/i]
[list]
[*]无依赖的按pom的读取顺序;
[*]有依赖的优先构建较深层次的依赖。
[/list]
[size=medium][b]
2.2 裁剪反应堆[/b][/size]
[size=small]2.2.1 指定构建模块[/size]
可以通过以下命令指定构建某几个模块
mvn clean install –pl account-email,account-persist
[size=small]
2.2.2 构建所列模块的依赖模块[/size]
mvn clean install –pl account-email –am

控制台信息
[code]
C:\Users\x\Desktop\recent note of study\Maven\源码\ch-10\account-parent>mvn clean install -pl account-email -am
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Account Parent
[INFO] Account Email
[INFO]

[/code]
[size=small]2.2.3 构建依赖于所列模块的模块[/size]
mvn clean install –pl account-parent –amd
[size=small]2.2.4 指定从何处开始构建[/size]
指定从所列模块开始构建其后的模块。
mvn clean install –rf account-parent
[size=small]2.2.5 裁剪后再裁剪[/size]
mvn clean install –pl account-parent –amd –rf account-email

https://www.dgrt.cn/a/430901.html

相关文章

H264学习笔记(1):视频压缩编码的基本原理

陆陆续续学习H264有一段时间了&#xff0c;曾经以为自己可以在这方面大有作为&#xff0c;但是越是学习越发现&#xff0c;根本不存在能够大幅度提升H264性能的方案&#xff0c;对于我这种水平的人来讲。初次学习&#xff0c;概念的理解仍然很困难。在这里我只是简单浅显的讲一…

Endnote下载的pdf文件合并到同一个文件夹

正在写毕业论文&#xff0c;从Endnote下载的文献一个pdf一个文件夹&#xff0c;如下图所示&#xff0c;我比较习惯把所有的pdf合并起来一起看。 用python实现将子目录下的pdf转移到同一个文件夹&#xff0c;这样就可以用福昕pdf软件合并了 代码如下&#xff1a; import os i…

利用百度地图获取地区边界坐标,在tableau中自定义地图

首先先利用一个网页代码&#xff0c;代码中调用百度地图的接口&#xff0c;获取地图的边界值 网页html和JS代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&…

EXCEL VBA窗口快捷键冲突查找原因

好久就发现在EXCEL内&#xff0c;VBA的窗口快捷键“Alt F11”&#xff0c;没有反应&#xff0c;但是一直懒得管&#xff0c;每次都是手动点击VBA窗口的。 需要直接看结果的&#xff0c;请直接滚动到下面NIVIDA的截图部分。 今天实在忍不住&#xff0c;决定查找原因&#xff0…

另一种解决AttributeError: ‘numpy.int64‘ object has no attribute ‘translate‘的方法

在python的编程中&#xff0c;使用pandas自带的to_sql方法写数据库时&#xff0c;遇到了“AttributeError: ‘numpy.int64’ object has no attribute ‘translate’”的报错。 解决的方法在最下面加粗字体 上网查了一下&#xff0c;说是numpy.int64类型的原因&#xff0c;就…

简单Flask登录验证

记录一下学习Flask的过程 下面是一个简单的FLask的登录验证代码 from flask import Flask from flask import requestapp Flask(__name__)app.route(/login) def func_login_submit():#id request.values.get(id)id1 "name_str"id2 "easy_pwd"return …

解决pandas\numpy 转换类型 造成数值(负数)改变问题

问题描述&#xff1a; 在使用pandas的dataframe的时候&#xff0c;有时候&#xff0c;会遇到明明应该是一串数字的&#xff0c;它使用科学计数法表示出来。 例如&#xff1a; 136377710738 变成 1.36378e11它自动将长整数&#xff0c;或者长小数&#xff0c;转成了这种不方便…

AOC Q2790PQ 显示器 OSD锁定 解决方法

使用这款Q2790PQ显示器的时候&#xff0c;偶然间发现显示器的菜单&#xff0c;调不出来了&#xff0c;出现OSD锁定字样&#xff0c;如图所示&#xff0c;图片来自此链接但是这款显示器&#xff0c;只有一个摇杆&#xff0c; ** 解决方法&#xff1a; ** 长按摇杆向下10秒钟…