gradle_从Gradle自动将工件提升到Maven Central

gradle

gradle

快速教程,无需在带有Gradle Nexus Staging插件的Nexus GUI中单击即可将Gradle项目中的工件提升/发布到Maven Central。

介绍

Maven Central (又名The Central Repository)(可能是)是Java和基于JVM的项目使用的世界上最大的开源工件集。 它是由Apache Maven的创建者创建的,自2002年以来一直在提供工件。如今,有一些替代方法(在下面列出),但是对于许多用户而言,Maven Central仍然是项目依赖项的主要来源(有时是唯一的白名单)。公司)。

问题

要执行发布到中央存储库的操作,Maven用户可以使用Nexus Staging Maven插件-免费但不是完全开源的插件。 但是使用Gradle时,需要登录Nexus GUI并手动调用两个操作(关闭存储库和发布/升级存储库)。 连续交付方法非常无聊,而且存在很大问题。 幸运的是Nexus公开了REST API,通过做一些工作就可以做到这一点。 Gradle Nexus Staging插件应运而生。

快速开始

重要的。 请注意,先决条件是在Sonatype OSSRH(OSS存储库托管)中具有活动帐户并已配置该帐户,并且Gradle项目配置为将发布工件发布到登台存储库中。 如果还没有的话,请遵循官方指南中Gradle的单独章节

要在项目中设置自动发布/促销,请将gradle-nexus-staging-plugin添加到根项目的build.gradle文件中的buildscript依赖项中:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.1"
    }
}

应用插件:

apply plugin: 'io.codearte.nexus-staging'

配置它:

nexusStaging {
    packageGroup = "org.mycompany.myproject"
    stagingProfileId = "yourStagingProfileId" //when not defined will be got from server using "packageGroup"
}

在成功将档案上传(使用mavenmaven-publishnexus插件)后,调用Sonatype OSSRH:

./gradlew closeRepository promoteRepository

关闭登台存储库并升级/发布它及其工件。 如果启用了与Maven Central的同步,则工件应在几分钟内自动出现在Maven Central中。

细节

该插件提供了两个主要任务:

  • closeRepository –使用上载的工件关闭打开的存储库。 登台配置文件中应该只有一个开放的存储库(可以使用Nexus GUI删除可能的旧/损坏的存储库)
  • promoteRepositorypromoteRepository /发布封闭的存储库(需要将工件放到Maven Central中)

还有一个:

  • getStagingProfile –获取并显示给定软件包组的登台配置文件ID。 这是一个获取值并将其作为stagingProfileId放入配置闭包的诊断任务。 要查看结果,需要使用--info开关调用gradle。

必须提到的是,调用Nexus REST API会立即结束,但是关闭操作需要一点时间,因此,可以使用内置的重试机制一起调用closeRepository promoteRepository

该插件“与上传机制无关”,可以与mavenmaven-pluginnexus插件一起使用。

有关更多详细信息和配置参数,请参阅项目网页或插件自己的发行版配置中的工作示例。

Maven Central的替代品?

它是一种更年轻,但很有前途的替代品-Bintray ,它也可以用于艺术品。 它对开源项目是免费的,我个人曾将其用于其他项目,甚至为Bintray,Travis和Gradle创建了自动发布机制。 它可以正常工作,但要将工件也放到Maven Central中,则需要在服务器上存储用于唱歌的私钥,并提供Nexus凭据。 这增加了它们被盗的风险,在Codearte中,我们更喜欢使用私有Jenkins实例直接将其发布到Maven Central。

概要

使用Gradle Nexus暂存插件,可以使用Gradle从命令行执行向Maven Central的整个发行过程,并且可以通过CI服务器完全自动执行一些其他工作。 没有更多按钮可推送Nexus GUI。 除了Sonatype OSSRH外,该插件还可以与具有启用的登台存储库的私有Nexus实例一起使用。

顺便说一句,插件中可能有很多可以增强的地方。 如果您需要某些东西或发现了错误,请随时使用问题跟踪器进行报告。

感谢KubaKubryński的动机和帮助,他们分析了记录不充分的Nexus REST API。

翻译自: https://www.javacodegeeks.com/2015/03/automatic-promotion-of-artifacts-to-maven-central-from-gradle.html

gradle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值