我已经将几个Java库发布到Bintray,然后将它们链接到Jcenter。为了便于讨论,我们将其中一个库称为“my.private:repo”。这使我可以像这样使用Gradle中的库:

...
repositories {
    jcenter()
}
...
dependencies {
...
    implementation 'my.private:repo:1.0.0'
...
}

优秀。

现在,对我的一个非理性的担心是,我将达到Bintray仓库的带宽或存储限制,因此我将不得不开始付费以在Bintray上托管该仓库(目前,我在开源计划中有18个仓库)。我的问题是,是否有可能在其他地方(如我自己的私有(private)服务器)托管库,然后让Jcenter简单地进行重定向。我完全知道我可以设置一个私有(private)服务器,然后执行类似的操作...
repositories {
    jcenter()
    maven { url ... }
}

但是我真的不想这么做。我想尽可能减少构建过程中的麻烦...这意味着要依靠一台服务器来进行重定向(如DNS),而要依靠另一台服务器来进行实际的托管。

这样就可以自己托管这些库,并让Jcenter进行重定向,以便我可以坚持使用第一个代码段吗?

有想法吗?

顺便说一句,将两件事(重定向和托管)解耦似乎很明智,但我知道让Bintray结合起来更有利可图,因为它们实质上可以迫使每个超出内存或带宽限制的人付费(如果只是简单地进行重定向,他们将无法做到)。

最佳答案

我不是JCenter专家。但是,对于可能会给他们带来的数十亿安全隐患,他们不可能提供这样的功能。

想象一下,您将能够成为JCenter的“后端存储库”(它可以自己托管Maven Artifact )。如果jcenter自己不知道特定的人工制品,它将来询问您。这对于欺诈者成为jcenter后端并发布包含各种讨厌代码的“修补”库而言,将是一个很好的载体。在这种情况下,JCenter将成为来自第三方的经过修改的(可能是危险的) Artifact 的分发者。

如果仅要求重定向到特定地址,也会存在安全威胁。您的服务器仍然可以被黑客接管,并且可以发布经过修改的jar。

在这两种情况下,都是JCenter分发可能已修改的jar文件,而几乎没有内容的控制权。

作为替代方案-考虑将构建作业中的 Artifact 上传到更持久的Maven存储库-例如Maven Central。

关于gradle - Jcenter链接到私有(private)托管的仓库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46578449/

10-09 12:50