如果项目已经上传到bintray并与jcenter同步,如何更改groupid?

时间:2016-01-13 00:11:32

标签: android maven sonatype bintray jcenter

我最近将我的github项目上传到bintray并成功将其与JCenter存储库同步。 我用过这个教程:

http://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en

所以我的gradle依赖是:

dependencies {
     compile 'com.github.danylo2006:hashtag-helper:1.1.0'
}

为了上传它,我修改了我的build.gradle并添加了相关的脚本安静。教程中的所有内容。

... some code here
ext {
    bintrayRepo = 'maven'
    bintrayName = 'hashtag-helper'

    publishedGroupId = 'com.github.danylo2006'
    libraryName = 'HashTagHelper'
    artifact = 'hashtag-helper'

    libraryDescription = 'This is a library designed for highlighting hashtags ("#example") and catching click on them.'

    siteUrl = 'https://github.com/danylo2006/HashTagHelper'
    gitUrl = 'https://github.com/danylo2006/HashTagHelper.git'

    libraryVersion = '1.1.0'

    developerId = 'danylovolokh'
    developerName = 'Danylo Volokh'
    developerEmail = 'v.danylo@gmail.com'

    licenseName = 'The Apache Software License, Version 2.0'
    licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
    allLicenses = ["Apache-2.0"]
}

以下是棘手的部分:

我已将我的github昵称 danylo2006 更改为 danylovolokh ,现在我想更改gradle依赖项:

dependencies {
     compile 'com.github.danylo2006:hashtag-helper:1.1.0'
}

更改为:

dependencies {
     compile 'com.github.danylovolokh:hashtag-helper:1.1.0'
}
  1. 我从Sonatype
  2. 获得了我需要的groupId
  3. 所以我修改了我的gradle脚本。
  4. 唯一相关的变化是:

    publishedGroupId = 'com.github.danylo2006'
    

    已更改为

    publishedGroupId = 'com.github.danylovolokh'
    

    我运行相关命令: gradlew安装 gradlew bintrayUpload

    我得到了BUILD_SUCCESSFULL

    但是如果我向任何其他gradle项目添加新的依赖项,我会收到错误“错误:(36,13)无法解决:com.github.danylovolokh:hashtag-helper:1.1.0”

3 个答案:

答案 0 :(得分:4)

包含到JCenter是通过groupId的路径完成的。 JFrog还需要包含从包到JCenter的新路径。 请通过support@bintray.com与JFrog支持小组联系

答案 1 :(得分:3)

@JBaruch是对的。似乎通过电子邮件发送bintray是真正让这些事情发生变化的正确方法。但为了完整起见,我附上了从Bintray收到的回复。希望发布他们的回复将阻止他们被电子邮件轰炸......

对于上下文,我有一个包含java的{​​{1}}存储库:

groupID:artifact

目前有使用此groupID的版本(1.0.0 / 1.0.1 / 1.0.2 / 1.0.3 / 1.0.4 /)。我让他们把这个改成

io.jeti.utils:serialize

事实上,我已经用这个缩短的groupID将版本(1.0.5 / 1.0.6)推送到了bintray。这是回应:

  

我们了解您的用例。在这种情况下,我们建议创建一个   新包并提交新的包含请求。请让我解释一下   让我们从你的java repo中获取'serialize'包。   目前,当只有一个与Jcenter同步时,它有2个路径前缀:   io / jeti / utils / serialize / - >同步io / jeti /序列化 - >不存在   在jcenter中

     

重新链接新的groupId,将导致旧的/当前的groupId   (io / jeti / utils)及其版本(1.0.0 / 1.0.1 / 1.0.2 / 1.0.3 / 1.0.4 /)   因为它依赖于旧的groupId而无法解析。这有可能   打破了与您的构建和脚本的当前集成。因此,   最好的方法是创建一个新的包(例如serialize2),提交   一个新的包含请求(包括新的groupId -   io / jeti / serialize)我们将批准它并使其同步   JCenter。在这种情况下,您将获得所有人的完整分辨率   现有版本的软件包(以及1.0.5 / 1.0.6)。

     

请告诉我们如何继续。

答案 2 :(得分:0)

我痛苦的建议是创建一个新的Bintray包,并要求将其发布到新的groupId上。我试图移动一个现有的程序包,而往返于JFrog支持的48小时20条消息使我无法在原始位置或新位置发布原始程序包,也无法在新位置发布新程序包。

最后,我不得不注册一个新的域名来托管我的项目,因为Bintray有效地拒绝了我试图更改为的groupId的访问。