按照 maven 规范,对仓库中的包使用 snapshot
和 release
进行了区分,前者每次可以覆盖发布,会以时间的方式保留之前的包,并将 snapshot 包依赖下载地址指向最新覆盖发布的包,顾名思义快照包是为了解决我们开发测试过程中反复发布的场景的,所以被定为可以覆盖发布。
那么对于 release
包,确需要特别说明,在互联网上同一个包的同一个版,我们应该认为是唯一的。不应出现在不同地方下载的两个同一个版本的包的内容不一样的情况。所以对 maven 来说没有快照后缀的包被视为 release 正式包。
对于 Nexus
仓库私服而言,在公司开发生产中,大家如果选用了这个仓库,要注意一下。nexus 在创建一个仓库的时候,有一个下拉框是可以配置决定 release 包是否能覆盖发布的,这个地方默认选中的是 Allow redeploy
,是允许覆盖发布的选项,如果不做修改,在未来不知何时某个 release 包被同事修改代码后覆盖发布就麻烦了。
在 Nexus 中具体的界面配置和选项如下图所示,这里我们最好选择 Disable redeploy
以禁止重新发布:
注:如果在特殊场景下,因为特定原因你确实需要重新发布某个 release 包,你可以选择临时修改这个配置,或者通过先删除需要重新发布的包再进行发布,这两种方式进行覆盖发布。
(END)