最近参与了一个新项目的开发,在项目的POM文件中引入了另外一个项目组开发的模块。由于他们还在开发过程中,因此为了及时得到他们最新的成功,在POM中引用了他们的snapshot版本,这样的话,一旦他们发布新版本。我这边很快就能够更新,拿到最新的jar文件。
就这样过了一段时间。今天,我到MAVEN本地库目录下面去查找一些文件,偶然间进到了这个snapshot的文件夹,这不进来还好,一进来,我晕,里面居然有十几个snapshot的历史版本。一家人整整齐齐的坐在那里。就像下面这个样子:
base-0.0.1-20190924.065706-10.jar
base-0.0.1-20190925.002128-11.jar
base-0.0.1-20190928.005462-14.jar
base-0.0.1-20190930.007895-21.jar
base-0.0.1-20191011.002198-26.jar
base-0.0.1-20191013.001145-37.jar
base-0.0.1-20191017.003587-41.jar
base-0.0.1-20191025.001435-55.jar
base-0.0.1-20191107.012927-66.jar
base-0.0.1-20191108.002149-68.jar
base-0.0.1-SNAPSHOT.jar
也不知道是怎么回事,MAVEN居然在本地库保留了这么多历史版本,我的磁盘空间可是有限的,这么下去怎么搞?而且看着也心烦啊。于是便想着怎么清除他们。当然,可以用手工命令一行行删。但是觉得这种方法似乎有些LOW.
我想。MAVEN自己一定有什么样的机制来管理这些snapshot的(顺便提一句,我们的nexus库上有snapshot的定期清理机制,很多snapshot在服务器已经找不到了,但还在本地保留)。
于是翻了翻资料,查了查MAVEN的官网。果然,MAVEN提供了一个插件,叫做purging-local-repository 详细资料如下:
https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html
这个插件可以提供本地库的清理工作。
于是尝试着用手工命令
mvn dependency:purge-local-repository -Dinclude=com.wizsource
来清理。 之所以加上了include 是因为我发现,如果不加include他会把pom里面所有的依赖都清理一次,会导致重新下载很多已经稳定的jar 比较浪费时间和资源。所以指定了groupid来只清理需要清理的snapshot
结果非常理想。清理之后,本地库只剩下了最后一个snapshot以及一个正式的jar。
如果大家有类似需求也可以考虑使用一下