我已经向Bintray发布了几个java库,然后将它们链接到Jcenter。为了争论,让我们调用一个库'my.private:repo'。这使我能够在Gradle中使用这样的库:
...
repositories {
jcenter()
}
...
dependencies {
...
implementation 'my.private:repo:1.0.0'
...
}
优异。
现在,对我来说可能是非理性的恐惧是我会为我的Bintray回购设备达到带宽或存储限制,因此我将不得不开始支付Bintray的回购权(目前我在开源上有18个回购计划)。我的问题是是否可以在其他地方托管库(比如我自己的私有服务器),然后让Jcenter简单地进行重定向。我完全知道我可以建立一个私人服务器然后做这样的事情......
repositories {
jcenter()
maven { url ... }
}
但我真的不想这样做。我想从构建过程中尽可能多地消除摩擦...这意味着依靠单个服务器进行重定向(如DNS),以及另一个服务器来进行实际托管。
因此可以自己托管这些库,只需让Jcenter进行重定向,这样我就可以坚持使用第一个代码片段了吗?
想法?
顺便说一句,似乎将这两件事(重定向和托管)分离是明智的,但我明白Bintray结合它们更有利可图,因为它们本质上可以迫使所有走出记忆的人或支付的带宽限制(如果他们只是进行重定向,他们就无法做到)。
答案 0 :(得分:-1)
我不是JCenter的专家。然而,他们无法为这将给他们带来的数十亿安全问题提供这样的功能。
想象一下,您将能够成为"后端存储库"对于JCenter(它将在其上拥有maven文物)。如果jcenter不知道它自己的特定人工制品,它就会问你这个问题。对于欺诈者来说,这将是一个很好的载体,可以成为一个jcenter后端并发布" patched"包含任何讨厌代码的库。在这种情况下,JCenter将成为第三方修改过的(可能是危险的)工件的分销商。
如果您只是要求重定向到特定地址,也会存在安全威胁。您的服务器仍然可能被黑客接管,并且可以发布修改后的jar。
在这两种情况下,JCenter都会分发可能已修改的jar文件,而无法控制内容。
作为替代方案 - 考虑将构建作业中的人工制品上传到更耐用的maven存储库 - 例如maven central。