构建机如何解决开发使用Release版本不适用SNAPSHOT版本的问题

我们项目管理目前可以是非常的不规范,只做功能层面的管理,并不会关心代码质量、项目结构等片底层的东西。开发人员忙于实现功能,也并不会将精力放在这些东西上面(讲道理,这本来也不属于开发操心)。所以我们并没有很规范的使用Maven,就版本号而言,我们只使用Release版本,且从来不升版本。

这在构建机上带来了一个问题,构建机会优先使用本地缓存,而本地缓存的Jar其实已经不是最新的了,但是构建机并不会去拉取最新的Jar包。似乎有个-U选项可以使用,但在实验中,该选项并不能强制拉取最新的Release版本的包。

在我们本机上,我们处理这个问题的方式是删除com.sdstc下得所有jar包(我们公司的group),这样Maven就会自动拉取最新的Jar包,但是该方案在构建机上是不可行的,因为构建机上往往同事构建多个项目,如果删除了Jar包,会导致其他项目构建失败。

最后我们采用的方案是什么呢?我们选在在执行构建指令时加上-Dmaven.repo.local xxx/xxx,为每个项目单独指定一个本地仓库,然后在使用这个仓库前,删除其com.sdstc下的所有jar包。因为同一时间一个项目只会有一个构建,所以并不会因为删除了jar包就导致构建出现问题。而且,单独构建一个项目所需要的仓库容量大约为200MB~300MB,100个项目也不过30G,完全是可以接受的(我们才20多个Java项目)。

参考资料