欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-03 18:53:48
...
logdown博文地址

不得不说,时间过得还真挺快的,两个月的时间一下过去了,向日葵也从小小的瓜子长到了40厘米高。前些天我给向日葵松土时候发现,两株向日葵的根已经纠缠到了一块。最早我预想的是等他们长大后就立马迁移让他们分开成长,但是过程中各种原因,一直把这个事情搁置着,最后酿成这样的结果。
我只好强行将他们分开,当然扯断了一些根,希望没有伤害到他们。迁移完之后还连下了好多天的雨,没有阳光呵护,真不知道他们是否能度过难关。
Late equals never,很多事情都是拖延就代表不做,一拖再拖,只有等问题主动暴露的时候,才亡羊补牢。生活中处处都需要主动的去跟踪问题发现问题,项目管理中更是。由于我最近琐事繁多,所以也都把问题暴露过于依赖在每天早上的站会上,这样会导致隔了一个晚上,问题已经暴露的过晚了,甚至很多问题就被遗忘了。因此,我觉得最好的方式应该是每天快下班的时候跟踪下今天各自的任务是否完成,未完成的是任务延后还是赶工(你没猜错,就是加班,说的好听点才特么叫赶工)处理。
------------分割线-------------
1 约定
1.1 约定优于配置
想要灵活那必然会增加复杂度,因此,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中指定),*仓库的地址等等。
1.2 超级POM
对于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项目,在别人机器上就无法构建了。

[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


2 反应堆
在一堆项目中,反应堆就是构建结构。所以对于单模块来说,反应堆就是他本身。
反应堆应当包括各模块之间继承和依赖的关系,从而自动计算出合理的模块构建顺序。
2.1 构建顺序
两个原则:
  • 无依赖的按pom的读取顺序;
  • 有依赖的优先构建较深层次的依赖。


2.2 裁剪反应堆

2.2.1 指定构建模块
可以通过以下命令指定构建某几个模块
mvn clean install –pl account-email,account-persist

2.2.2 构建所列模块的依赖模块

mvn clean install –pl account-email –am

控制台信息
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]


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