Eclipse m2e插件的Maven库索引的作用
利用m2e插件的索引,可以方便的检索maven库的可用项目,不用每次去中心库或者项目官网找,尤其一些项目官网在墙外,查起来比较困难。
上图中,灰色的表示jar文件在本地库,黑色的表示在远程库(maven中心仓库,或者配置的其它镜像库)。
位置:m2e将索引存储到了workspace
存储在workspace中,优点是可以比较好的隔离不同项目集,修改一个不会影响其它。同时也带来一些问题:
- 每次更换workspace就需要重新建立索引
- 一个workspace的索引更新后,其它索引不能同时更新,需要在使用时重新更新
- 最关键的,在天朝,这速度是龟速的,动辄是以小时为单位进行的,新建一次workspace重建索引的时间简直无法忍受,更别说不是每次build都能成功,完成一次建立好几天一点儿也不奇怪。
所以我决定,把索引拿出来,每个工作空间都共享,只要一个建立和更新成功,其它的也就OK了。
实现方式
- 找到m2e插件在工作空间生成的文件
$path_to_workspace/.metadata/.plugins
- 在我的目录下新建一个隐藏目录,既可以防止误删,又不影响观瞻
cd ~
mkdir .my_m2e_wp_dirs
- 进入一个成功建立索引的工作空间,把m2e插件的目录移动到上面建立的目录
cd $path_to_workspace/.metadata/.plugins
mv org.eclipse.m2e.* ~/.my_m2e_wp_dirs
- 为这些目录建立软连接
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.core org.eclipse.m2e.core
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.launching org.eclipse.m2e.launching
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.core.ui org.eclipse.m2e.core.ui
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.logback.configuration org.eclipse.m2e.logback.configuration
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.jdt org.eclipse.m2e.jdt
- 启动Eclipse,索引可用,完工。
注意事项
- 索引文件其实存在core目录中。上面的操作并不是只共享了索引文件,还有其它一些配置信息,如果所有的workspace用的maven版本和配置文件都相同的话,这样做会非常方便,新建workspce之后,不用每次都进行maven的配置。
注意,如果不同的工作空间,使用的maven版本和配置文件不相同,那么请只共享索引文件,其它目录不要共享
-
软连接可以写成shell脚本,放到固定位置,以后直接调用即可。我在共享目录下写了一个脚本,每次新建工作空间以后,进入到插件目录
cd $path_to_workspace/.metadata/.plugins
然后执行脚本,内容如下:
``` shell
rm -rf org.eclipse.m2e.*
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.core org.eclipse.m2e.core
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.launching org.eclipse.m2e.launching
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.core.ui org.eclipse.m2e.core.ui
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.logback.configuration org.eclipse.m2e.logback.configuration
ln -s ~/.my_m2e_wp_dirs/org.eclipse.m2e.jdt org.eclipse.m2e.jdt