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

介绍

Maven Central (又名“中央存储库”)(可能)是世界上最大的一组开源工件,这些工件被基于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自动将工件提升到Maven Central相关推荐

  1. gradle maven_将工件从Gradle自动提升到Maven Central

    gradle maven 快速教程,无需在带有Gradle Nexus Staging插件的Nexus GUI中单击即可将Gradle项目中的工件提升/释放到Maven Central. 介绍 Mav ...

  2. Gradle 配置阿里云代理 https,maven central 中央仓库,google,gradle plugin,jcenter

    Gradle 配置阿里云代理 1. 问题描述 在使用Gradle更新项目依赖时,发生如下错误: Using insecure protocols with repositories, without ...

  3. gradle使用maven_使用Gradle – 2019版从Travis可靠发布到Maven Central

    gradle使用maven 得益于在2018年和2019年末实现的显式登台存储库创建功能集,使您(自动)从Travis(不仅是)发布到Maven Central更加可靠. 背景 如果您仅想获取有关如何 ...

  4. 使用Gradle – 2019版从Travis可靠发布到Maven Central

    得益于在2018年和2019年末实现的显式登台存储库创建功能集,使您(自动)从Travis(不仅是)发布到Maven Central更加可靠. 背景 如果您仅想获取信息,如何使您的工件从Travis发 ...

  5. eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central

    eap aka 如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有 ...

  6. 使用API​​密钥(aka身份验证令牌)部署到Maven Central

    如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有提供任何机制来本 ...

  7. central maven_一键发布到Maven Central的方法

    central maven 当我向Maven Central发布Java开源库jcabi-aspects的新版本时,我花了30秒钟的时间. 甚至更少. 最近,我发布了版本0.17.2. 您可以在Git ...

  8. 一键发布到Maven Central的方法

    当我向Maven Central发布Java开源库jcabi-aspects的新版本时,我花费了30秒钟的时间. 甚至更少. 最近,我发布了0.17.2版本. 您可以在Github第80期中看到所有情 ...

  9. 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central

    第一部分:在bintray上创建package 首先,你需要在bintray上创建一个package.为此,你需要一个bintray账号,并在网站上创建一个package. 第一步:在bintray. ...

最新文章

  1. 肠里细菌“肚里蛔虫”:肠脑研究缘何越来越热
  2. 从底层理解Python的执行
  3. ZOC7 for Mac连接CentOS7无法输入中文问题
  4. Linux下ps -ef和ps aux的区别及格式详解
  5. 什么样的产品可以成功?
  6. CVPR 2021 目标检测、跟踪和姿态估计最新进展分享
  7. STM32标准库官网下载方法
  8. Kotlin 常用API汇总
  9. java怎么求素数_如何用Java求素数?
  10. Learn Git Branching 学习笔记(基础篇)
  11. 东周列国志美文摘录-晏平仲巧辩服荆蛮
  12. 【计算机网络——制作双绞线】
  13. leetcode——卖股票系列
  14. 带你学习DSP系列一:走进TMS320F28377
  15. composer 安装阿里云sdk
  16. uniapp轮播组件之自动轮播
  17. Python xlwings插入图片(Excel插入图片)
  18. Java开发思考笔记
  19. KUKA机器人到底该怎么安装
  20. 面试官问你HTTP状态码,你敢答吗?

热门文章

  1. java中input表单中的type=date返回类型【切记】
  2. javaSE视频教程正式启动
  3. 当当网新用户注册界面——CSS代码
  4. 2017蓝桥杯省赛---java---B---8(包子凑数)
  5. Mybatis实体类属性名与数据库类名不对应的两种解决方法
  6. cs1.5 linux服务端,Linux下架设CS1.5服务器
  7. mysql级联复制转换成一主两从_一主两从转级联复制
  8. 使用maven聚合安装多个maven工程到本地仓库报错的解决方法:child module pom.xml does not exist
  9. ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
  10. Centos7-通过RPM方式安装MySQL5.7