maven包的版本有两类,一类是 SNAPSHOT,一类是 RELEASE。
这两类有个重要的区别,RELEASE 的包需要改 pom.xml 中的 version 的时候才会引入其他版本(如新版本),但是 SNAPSHOT 允许不改 version 而引入新版本(自动通过时间戳判断,那 SNAPSHOT 是怎么做到的呢? SNAPSHOT 就是为了应对 “被依赖者频繁改版本号导致依赖者需要频繁修改pom.xml的版本” 的问题。例如A依赖B,B在开发过程中,所以B肯定是经常变动的,每次变动时都得通知A修改版本,会疯掉的。如果B是SNAPSHOT版本,B更改后,A并不需要修改pom.xml中的版本就可以不断拉取到B的更新。
但是有个问题,B虽然是SNAPSHOT的,但是maven或者说IDE(Eclipse或IDEA)并不是非常频繁去拉取更新,比如你项目依赖的这个jar是今天下载的,接着有人推了新版jar到私库,要等到明天才会检查到本地的jar的时间戳落后于私库上的,因此这种按天的触发频率太慢了,如何手动触发?
更新snapshot版本的包
如何手工触发拉取最新的SNAPSHOT版本的jar?
-
使用 -U 参数。在命令行或 IDEA 里执行 mvn clean compile -U 即可触发重新拉取
-
配置IDE,以 IDEA 为例,在设置中勾上 Always update snapshots,在手工点击右侧Maven的刷新按钮即可触发
-
改 maven的 settings.xml文件
-
手工删除本地仓库的jar包,并点击 IDEA 右侧Maven的刷新按钮触发重新拉取。
使用 -U参数
使用 mvn clean compile -U 来实现拉取最新的snapshot版本的jar
-
-U 是强制检查的意思,-U并不是每次都会拉最新的,只有在时间戳落后于私库上的jar的时候才会下载最新
-
注意一下 -U,检查的是时间戳是否落后,并不是日期是否落后,时间戳是更加精确的。如下 20200821.101436-8 就是时间戳
配置IDEA
使用idea的,勾上 “Always update snapshots”
idea 默认是没有勾上的
勾上后点击一下 IDEA 中右边的Maven的刷新按钮
配置 settings.xml
修改settings.xml,在 repository 和 pluginRepository 下配置总是更新Maven snapshots依赖:
参数解释:
删除本地私服jar
手工删除本地仓库的jar,点击maven的刷新按钮即可触发重新拉取
发表评论
取消回复