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"
}
在成功将档案上传(使用maven , maven-publish或nexus插件)后,调用Sonatype OSSRH:
./gradlew closeRepository promoteRepository
关闭登台存储库并升级/发布它及其工件。 如果启用了与Maven Central的同步,则工件应在几分钟内自动出现在Maven Central中。
细节
该插件提供了两个主要任务:
- closeRepository –使用上载的工件关闭打开的存储库。 登台配置文件中应该只有一个开放的存储库(可以使用Nexus GUI删除可能的旧/损坏的存储库)
- promoteRepository – promoteRepository /发布封闭的存储库(需要将工件放到Maven Central中)
还有一个:
- getStagingProfile –获取并显示给定软件包组的登台配置文件ID。 这是一个获取值并将其作为stagingProfileId放入配置闭包的诊断任务。 要查看结果,需要使用--info开关调用gradle。
必须提到的是,调用Nexus REST API会立即结束,但是关闭操作需要一点时间,因此,可以使用内置的重试机制一起调用closeRepository promoteRepository 。
该插件“与上传机制无关”,可以与maven , maven-plugin或nexus插件一起使用。
有关更多详细信息和配置参数,请参阅项目网页或插件自己的发行版配置中的工作示例。
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