背景
最近在项目开发过程中遇到了修改了某个模块的代码,重新打包引用该模块的module时,修改的代码不存在的问题
探究
查询maven打包相关的资料,明白了maven打包时需要到本地的maven仓库查找所有依赖的jar包,包括同一个项目的其它依赖模块的jar包。而我们常用的在idea中打开项目时,项目是依赖源码编译的,因此即使某个依赖的module在本地maven仓库中没有打成jar包也是可以编译生成的,在模块中创建一个类对象,其他依赖模块可以立马感知到。
但是在打包时就需要去maven仓库里面找了,如果找不到就会打包失败
问题
这么看来我们在打包某个模块时,如果依赖的模块代码有变动时需要先将依赖模块打包后再对该模块进行打包。是不是感觉很麻烦,那有没有办法在打包时,将依赖有变动的module顺带着重新install到本地maven仓库呢
解决方案
答案是可以的,在打包时使用
maven clean install -U -pl 打包模块的相对路径 -am -Dmaven.test.skip=true
-U
意思是:强制刷新本地仓库不存在release版和所有的snapshots版本。
对于release版本,本地已经存在,则不会重复下载
对于snapshots版本,不管本地是否存在,都会强制刷新,但是刷新并不意味着把jar重新下载一遍。只下载几个比较小的文件,通过这几个小文件确定本地和远程仓库的版本是否一致,再决定是否下载
-pl
全称 --project
英文解释: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
中文说明:表示同时处理选定模块所依赖的模块