快速教程,无需在带有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. 从Google代码库找到的好东西
  2. Android组件的使用:RadioButton
  3. Halcon算子学习:create_sheet_of_light_model
  4. android - 调用系统分享功能分享图片
  5. springcloud微服务系列之服务注册与发现组件Eureka
  6. autocad.net-图片打印合成
  7. 电脑浏览器主页被360锁定 - 解决方案
  8. 华为是怎样研发的(10)——知识管理
  9. Zookeeper隐藏通道和羊群效应
  10. MapReduce 与 Database 的乌龙战
  11. ASII码:小写字符比大写字符大32
  12. 人工智能软件工程师软件清单
  13. 各向同性+随动硬化+过应力-vumat-理论推导
  14. 裂变位法加密 best coder
  15. 2018年关于人工智能、大数据和分析的十大预测
  16. Linux基本操作命令、Vim编辑器、Jenkins、Maven
  17. 写在2022年尾巴上
  18. 文本处理强调的是使用计算机,计算机一级信息技术第五六章复习题课件.ppt
  19. Untiy添加双鼠标功能记录
  20. php 解析word文件,php解析word文档

热门文章

  1. 《四世同堂》金句摘抄(九)
  2. 求 1-100 之间不能被 3 整除的数之和
  3. 使用jQuery操作DOM元素
  4. java通过commons-fileupload实现多张图片的上传(jsp页面)
  5. 集合打印出来的信息不是输入的信息
  6. linux mysql复制一个表结构图_详解Windows和Linux下从数据库导出表结构,以及Linux下如何导入.sql文件到MySQL数据库...
  7. mybatis多表新增如何获取主键ID
  8. java记录目录树_Java记录
  9. 机器学习java_Java机器学习,第2部分
  10. apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...