2013-04-08 106 views
4

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

但是构建将一些公共库(和代理)和我的用户下载这些依赖关系是在这些公共服务的怜悯,如果他们将返回未修改的文件。

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

有一个Maven的方式来做到这一点?与此相似,是否有一种简单的方法来归档我的依赖关系(本地存储库的副本包含所有使用的工件和元数据文件),这样即使中央存储库发生故障或将它们发送给脱机客户,我也可以重复构建它们。如果可能的话,这两者都不需要存储库代理,我知道我可以建立一些东西来做到这一点,我只是想知道是否有maven中的基础设施,也许运送一个只包含元数据文件或类似?)

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

+3

Sonatype的要求对上传到中央Maven的每一个神器GPG签名。 Maven并没有检查这个签名,因为检查它是Nexus仓库管理器商业风格的一个卖点。假设您的商业Nexus实例和您的构建机器之间的连接是安全的(并且,坦率地说,易于安全)。 – Barend 2013-04-08 21:37:10

+0

感谢@Barend,但这并不能帮助我,如果我想分配给更广泛的受众(谁可能甚至没有自己的仓库服务器) – eckes 2013-04-08 22:39:04

+1

我知道这是没有帮助的,这就是为什么我没有张贴它作为一个答案: - /。这确实解释了为什么GPG校验和的情况是这样。 – Barend 2013-04-09 10:54:27

回答

2

BitcoinjEnforcerRules,它似乎是Maven的enforcer plugin的插件(就是它是插件的插件)。它的工作原理类似于gradle-witness,这意味着它的(希望)所有用于工件依赖关系的校验和进行比较,您以前创建的列表。

尽管没有什么更好,但如果可以简单地设置用于POM的直接依赖性的校验和(或用于签名POM的openPG键,以防万一它是快照假象),那么理想的解决方案是POM这些依赖项将包含它的工件的校验和,以及其直接依赖关系的POM的校验和(/ openPG键,如果是快照)等等。 请注意,如果使用校验和,那么它们应该绑定到特定的Maven存储库,因为同一个(不变的,即非快照)工件可能在不同的存储库中具有不同的校验和。