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

快速教程,无需在带有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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言指针自定义函数,c语言函数指针定义,指针函数和函数指针的区别

往往,我们一提到指针函数和函数指针的时候,就有很多人弄不懂。下面就由小编详细为大家介绍C语言中函数指针,指针函数和函数指针之间的区别。c语言指针函数定义:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变…

HarmonyOS的功能及场景应用

一、基本介绍 鸿蒙HarmonyOS主要应用的设备包括智慧屏、平板、手表、智能音箱、IoT设备等。具体来说,鸿蒙系统是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备…

java DOM4J 读取XML

最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.util.Iterator; import java.io.BufferedReader; i…

c语言如何实现不定参数,C语言中不定参数的实现

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼但是请注意,由於 K&R C 中并不检查参数型态,so 在此是用 ANSIC 来说明,毕竟 ANSI C 是目前所有 C Compiler 都支援的标准;常在网路上看到有人推荐 K&R The C Programming Language 这本书…

SX-BOX试用笔记

1.今天开始试用SX-BOX,我将用它来做自己平时的开发和文档的工作,因为我的职责是一个程序员。 1.屏幕如果支持更大的也清晰的话,我会感觉很舒服。 2.USB设备插入还无法识别。。。 3.现在开始安装开发工具,目前我打算在上面安装Adob…

c语言成绩转换绩点,如何将平时成绩转化为GPA成绩?

新东方留学生资料下载姓名手机号短信验证码图片验证码年级请选择5年级6年级7年级8年级9年级高一高二高三高三复习大一大二大三大四大五研一研二研三博一博二在职课程请选择雅思托福GREGMATSAT其他行政区请选择请选择请选择{"name":{"label":"姓名&quo…

Hibernate查询缓存如何工作

介绍 既然我已经介绍了实体和集合缓存,现在该研究查询缓存的工作原理了。 查询缓存与实体严格相关,它在搜索条件和满足该特定查询过滤器的实体之间绘制关联。 像其他Hibernate功能一样,查询缓存也不像人们想象的那么琐碎。 实体模型 对于我…

Javascript学习笔记1 数论

1.Javascript不用担心内存的回收与对象的销毁! 2.Javascript有:infinity、NaN全局变量表示 被0整除的无穷 和 非数字。undefined和null表示 未定义 和 空,undefined和null可以互换,判别二者需用 全等 号(不光判断值&…

C语言bcd码减法过程,bcd码的减法运算规则举例.ppt

bcd码的减法运算规则举例第1章:微型计算机基础 本章基本要求: ⑴ 单片微型计算机的含义 ⑵ 各系列单片机的特点 ⑶ 51系列单片机的概念及指标(重点) ⑷ 单片微机工业产品概念 第1章:微型计算机基础 电子计算机是一种能对信息进行加工处理的机…

JavaFX技巧20:有很多需要展示的地方吗? 使用画布!

JavaFX应用程序似乎有两种:第一种使用带有节点和CSS样式的场景图,第二种使用单个画布。 但是,将这两种方法混合使用是完全合法的。 尤其是当您的应用程序必须显示大量详细信息时,您很容易最终创建成千上万个节点。 即使JavaFX的整…

VirtualBox命令更改虚拟硬盘空间

主要是使用VBoxManage命令来操作第一步:打开CMD,进入到virtualbox存放虚拟机的目录中(win7 系统可以直接在文件夹空白处按住shift键右键鼠标选择[在此处打开命令窗口]),输入[vboxmanage list hdds]可以查看所有的虚拟机的信息,这里…

华为手机老是android自动升级,华为手机系统怎么升级 华为手机升级系统的两种方法...

华为手机使用的均为安卓系统,升级方法有多种,各位可以根据条件不同自行选择升级。华为手机升级系统的两种方法方法一:手机联网更新首先把手机联网。点击设置。向下拖动点击最后一项“关于手机”点击“系统软件更新”。点击在线升级即可。友情…

Wildfly,Apache CXF和@SchemaValidation

在过去的几天中,我一直在进行从JBoss 4到Wildfly 8的应用程序迁移。 该应用程序使用了不同的技术,但是我们这里将重点放在XML Web Services JAX-WS上 。 是的,我知道它们已不再流行,但是这些是很久以前开发的,因此需要…

linux网络体系架构

原创kylin_zeng:http://blog.csdn.net/kylin_fire_zeng 本文参考国嵌视频教程,再此感谢国嵌教育。 一、协议栈层次对比: 1)网络接口层把数据链路层和物理层合并在了一起,提供访问物理设备的驱动程序,对应的网络协议主…

android 自定义弹窗diss,Android中自定义PopupWindow,动态弹窗。

我的第一篇博客,咱们直奔主题。先上个效果图在android中自定义PopupWindow:1、首先定义好你想要显示的窗口的布局文件,再实例化一个View对象:窗口布局可灵活变化,dialog_layout.xml代码如下:android:id&quo…

拼图项目的动机和目标

几周前,我写了一篇关于Jigsaw项目如何破坏现有代码的文章 。 那么,我们能得到什么回报呢? 让我们看一下项目解决的痛点及其在Java 9中解决问题的目标。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序(不同…

android中按一个按钮弹出字,允许用户在Android中长按一次即可编辑按钮文字

我想允许App用户在Android中更改Button文本。 当用户单击按钮时,它应该执行某些操作,但是当他/她长按按钮时,将弹出一个编辑文本,并且无论用户键入什么内容都应另存为按钮文本。到目前为止,我已经完成了以下操作。btn1…

异常作弊– Java 8 Lambdas

异常作弊– Java 8 Lambdas 撇开关于Checked vs Runtime异常的宗教辩论&#xff0c;有时由于库的构造不佳&#xff0c;处理Checked示例会使您发疯。 考虑一下您可能要编写的以下代码片段&#xff1a; public void createTempFileForKey(String key) {Map<String, File>…

hdu 4738 桥

题目&#xff1a;还是自己看题目吧 trick&#xff1a;当不连通时不需要人去炸。否则&#xff0c;当桥的费用为0时当然需要一个人去炸。。。 #include <set> #include <map> #include <list> #include <cmath> #include <queue> #include <sta…

关于单元测试脚手架的几点思考

莱昂&#xff1a;Luc Besson的专业人士 当我开始通过创建相同的对象并准备数据来运行测试来重复使用单元测试方法时&#xff0c;我对设计感到失望。 带有大量代码重复的长时间测试方法看起来并不正确。 为了简化和缩短它们&#xff0c;基本上有两个选项&#xff0c;至少在Java…