maven创建离线本地仓库的坑之verifying availability


maven在管理依赖组件和描述工程全貌上是一把好手,但是,它强烈地依赖联网环境,特别是对于一些公共的组件。
离线运行,maven本身就支持的不够友好,离线从来都不是maven的好朋友!
笔者就在搭建maven本地仓库时遇到了一些麻烦。即使设定了maven配置文件中的settings.xml中localRepository和offline,maven在离线运行过程中依然强烈冲动地要联网,进行verifying availability ......
寻遍网络,后来还是stackoverflow上一篇E文,对于这个问题的解决有帮助。对于maven,高于3.1的版本,可以明确指定-llr参数进行避免。但是,低于此版本没有这个扩展参数,但运行时仍然表现出此种怪异的行为。

还是依据那篇E文,本来还不太相信那段"鬼"描述,但最后的解决,还是真是依据那段话,也让笔者认识到maven的坑有多大!这中间还一度曾逼得自己去查阅maven的源代码,也是够头上出一把汗的。。。
因为笔者是通过联网环境下载完依赖组件后,然后再悉数转移阵地,去创建本地仓库;这样在本地仓库里面,就有一个特殊的临时文件*.repositories

在联网的环境下,maven运行并不会显式遇到问题;在离线时,maven这种联网的冲动,会导致问题显形。
E文中介绍删除这类的临时文件即可解决,最初笔者还是不太相信,后面发现竟然是正确的!在Linux下可利用下面脚本进行删除
find . -name "*.repositories" -type f -print -exec rm -rf {} \;
注:后面的斜杠分号都是有效的
这个脚本也让认识到rm不可删除子目录下的某类型文件,也是大奇怪中的小奇怪了:)

日积月累,必可置宝:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章