Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 Nexus中的发布存储库策略是否确保jar永远不会更改?_Maven 2_Nexus - Fatal编程技术网

Maven 2 Nexus中的发布存储库策略是否确保jar永远不会更改?

Maven 2 Nexus中的发布存储库策略是否确保jar永远不会更改?,maven-2,nexus,Maven 2,Nexus,我正在将Nexus OSS部署为公司内部存储库。 其中一个主要要求是,一旦Nexus下载了jar(例如,当使用is作为Maven Central的代理时),它将永远不会改变。 我知道Maven Central有这个策略,但我正在使用其他不在我控制之下的存储库,我必须在我这边验证这个需求 发布存储库策略是否确保一旦jar下载到响应库中,它就永远不会更改 该要求的存在是为了确保我们可以回到1.5年前创建的产品版本,并确保产品使用的存储库工件在现在构建时是相同的。事实上,发布存储库应该严格禁止在发布后

我正在将Nexus OSS部署为公司内部存储库。 其中一个主要要求是,一旦Nexus下载了jar(例如,当使用is作为Maven Central的代理时),它将永远不会改变。 我知道Maven Central有这个策略,但我正在使用其他不在我控制之下的存储库,我必须在我这边验证这个需求

发布存储库策略是否确保一旦jar下载到响应库中,它就永远不会更改


该要求的存在是为了确保我们可以回到1.5年前创建的产品版本,并确保产品使用的存储库工件在现在构建时是相同的。

事实上,发布存储库应该严格禁止在发布后修改内容,这正是Maven Central所做的:

(…)这里有一些 释放性质的研究 存储库,如Central Maven 存储库:

释放稳定性

一旦发布到中央Maven 存储库、工件和 描述该工件的元数据 永不改变。这是释放的性质 存储库保证项目 这取决于发布的版本 随着时间的推移,可重复且稳定。虽然 正在开发新的软件构件 每天向中央发布一次 工件被分配了一个版本 中环上的数字,有严格的限制 禁止修改内容的策略 一个软件工件在 释放

也就是说,Maven客户端是否(重新)下载工件并不真正取决于存储库及其策略,这是Maven DNA的一部分,不会发生(当然,除非您从本地存储库中删除给定工件)。引用布雷特·波特的话:

根据定义,Maven中的版本是不变的。always标志是检查新版本(就像它查找新快照一样),而不是对现有版本的修改


换句话说,如果您不删除Nexus存储库的内容,Nexus将永远不会再次重新下载已发布的工件,因此您将能够使用完全相同的库重建两年前创建的产品版本。

Wow。非常详细的回答。谢谢