【问题标题】:Jcenter link to privately hosted repoJcenter 链接到私人托管的存储库
【发布时间】:2017-10-05 05:30:15
【问题描述】:

我已经将几个 java 库发布到 Bintray,然后将它们链接到 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 进行重定向,以便我可以坚持使用第一个代码 sn-p?

想法?

顺便说一句,将这两个东西(重定向和托管)解耦似乎很聪明,但我知道将它们结合起来对 Bintray 来说更有利可图,因为它们基本上可以迫使每个人退出内存或支付带宽限制(如果他们只是进行重定向,他们就无法做到这一点)。

【问题讨论】:

    标签: gradle bintray jcenter


    【解决方案1】:

    我不是 JCenter 方面的专家。然而,他们不可能为这将强加给他们的数十亿安全问题提供这样的功能。

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

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

    在这两种情况下,JCenter 都会分发可能修改过的 jar 文件,并且几乎无法控制内容。

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

    【讨论】:

    • 我认为这不是一个有效的问题。 Jcenter 可以强制限制只有一个站点可以注册以分发单个包(他们已经强制两个用户不能拥有具有相同包名的包的约束)。此外,他们可以强制网站使用 GPG 密钥(他们现在无论如何都使用它来上传)验证其合法性。因此,他们似乎一切都准备就绪,可以在没有安全问题的情况下支持这一点。
    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2016-04-22
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多