4

当我使用 POM 分发源项目时,我可以使用版本字符串定义依赖项。如果这些依赖项不在本地存储库中,则构建将下载这些依赖项,它甚至会使用来自同一存储库的元数据验证这些下载文件的校验和 ( -C)。

但是,构建将从许多公共存储库(和代理)下载这些依赖项,如果他们返回未修改的文件,我的用户将受到这些公共服务的摆布。

我想有一种方法来记录我所有构建依赖项的校验和并将它们与 POM 一起发送(所以我确信文件没有改变,但我不需要将本地存储库的副本发送给构建器)。

有 Maven 方法可以做到这一点吗?与此类似,是否有一种简单的方法来归档我的依赖项(包含所有使用过的工件和元数据文件的本地存储库的副本),以便即使中央存储库失败或将它们发送给离线客户,我也可以重复构建?

(如果可能的话,两者都不需要存储库代理。我知道我可以构建一些东西来做到这一点,我只是想知道 maven 中是否已经有一个基础设施。也许运送一个只包含元数据文件或类似文件的本地存储库?)

注意:我不是在寻找createChecksum生成的工件,而是在锁定使用的依赖项的校验和。我找到了一个maven-create-checksums插件,但没有对应的验证器。

4

1 回答 1

2

BitcoinjEnforcerRules,它似乎是 Maven 的执行器插件的插件(没错,它是插件的插件)。它的工作方式类似于gradle-witness,这意味着它将(希望)所有使用的工件依赖项的校验和与您之前创建的列表进行比较。

虽然总比没有好,但理想的解决方案是,如果可以简单地为直接依赖项的 POM 设置校验和(或用于签署 POM 的 openPG 密钥,以防它是快照工件),并且这些依赖项的 POM 将包含它的工件的校验和,以及其直接依赖项的 POM 的校验和(/openPG 密钥,如果是快照),等等。请注意,如果使用校验和,那么它们应该绑定到特定的 Maven 存储库,因为相同的(不变的,即非快照)工件在不同的存储库中可能具有不同的校验和。

于 2015-03-12T19:35:01.970 回答