做工具要有"码德"
最近在搞别的事情,没时间写公众号了,不过遇到值得写的,还是要草草记录一下的。
这周经历了一件比较奇葩的事情,大致时间线如下:
-
周四下午的时候,发现自己一个脚本使用的maven发布功能有一个奇怪的问题:正常来说,如果我发布的产物版本以
-SNAPSHOT
结尾,那么maven源的产物名称会替换成一个时间戳。但是在使用内网的maven仓库的时候发现并没有,在晚上多次尝试后,确定本地路径是可以的,只有发布到内网的maven仓库才不会替换成时间戳。 -
周五晨会同步了这个问题,有位同事比较有经验,沟通中说了一句:
有些仓库可能是做了限制
。我当时以为是命名有什么要求?就没有深究。 -
上午找了teg的同事,一开始我截图的时候发布的版本和拉取的版本差了个
.0
(截图的时候,发布的是1.0.0-SNAPSHOT
,拉取的是1.0-SNAPSHOT
),该同事一直强调是我没写对,我一直在解释这是我在测试,截图只是示意这个问题,即使写对了版本也拉取不到依赖。 -
最终,该同事get到了我的核心意思:发布
-SNAPSHOT
版本,maven却没有替换成时间戳,这样再去拉取-SNAPSHOT
版本的时候,就会解析失败,因为解释的是时间戳格式的。 -
一开始该同事表示公司几千人都在用,怎么都没问题。我直截了当表示,自己怀疑他们改了规则,要换一个maven源验证一下,该同事直接改变口径,表示他们为了避免存储浪费关闭了这个功能,并表示愿意给我打开。
-
此刻我想起之前的一个仓库,确实是支持的,于是把自己的脚本换了一个远程仓库,发现确实正常了。原来的仓库在对方开了配置之后也正常。
回头看晨会同事那句话,恍然明白他的意思,只是在teg同事承认他们修改SNAPSHOT规则之前确实很难往那个方向想,毕竟这是默认的规则,就这么悄悄改了,还不给使用者任何提示,作为一个开发者,个人感觉很没有"`码德`"。
值得一题的是,按照他们的默认规则,xxx-SNAPSHOT
确实不会生成时间戳格式的文件,但是xxxSNAPSHOT
仍然会,这基本算是他们的一个bug了,因为gradle只有版本是-SNAPSHOT
才会去拉时间戳格式的文件,所以没有-
之后,会直接按照版本名去拉,他们却换成了时间戳,也会发生报错。
总的来说,最让我气氛的是,作为一个开发,设计一个工具,没有基本的同理心和原则,建议"`耗子尾汁`"。
还有一个就是沟通的问题,我本来有两个机会提前解脱,一是同事跟我讲的时候,我没有继续追问,因为有点反常识,事后看才恍然大悟;二是反馈问题的时候,自己描述问题没有十分准确,过于随意,反而花费了更多的时间去解释纠正。
以上。