使用 gradle 在 maven Central 上关闭和释放工件
Posted
技术标签:
【中文标题】使用 gradle 在 maven Central 上关闭和释放工件【英文标题】:Close and release artifact on maven central using gradle 【发布时间】:2018-02-06 03:53:06 【问题描述】:我有这个 gradle 脚本:
def configureUploadArtifacts(groupId, repoUrl, _packaging)
def gpgKeyId = System.getenv('GPG_KEY_ID')
def gpgPassword = System.getenv('GPG_KEY_PASSWORD')
def gpgFile = System.getenv('PATH_TO_GPG_FILE')
project.group = groupId;
project.archivesBaseName = name
project.version = getVersionNameFromFile()
ext."signing.keyId" = gpgKeyId
ext."signing.password" = gpgPassword
ext."signing.secretKeyRingFile" = gpgFile
uploadArchives
apply plugin: 'maven'
apply plugin: 'signing'
signing
sign configurations.archives
def userName = System.getenv('Os-s-rH_USER_NAME');
def password = System.getenv('Os-s-rH_PASSWORD');
repositories
mavenDeployer
beforeDeployment MavenDeployment deployment -> signing.signPom(deployment)
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/")
authentication(userName: userName, password: password)
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/")
authentication(userName: userName, password: password)
pom.project
name "$project.name"
packaging "$_packaging"
// optionally artifactId can be defined here
description 'A collection of core tools I use'
url "http://github.com/$repoUrl"
scm
connection "scm:git:git://github.com/$repoUrl.git"
developerConnection "scm:git:ssh://github.com/$repoUrl.git"
url "http://github.com/$repoUrl/tree/master"
licenses
license
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
developers
developer
id 'TacB0sS'
name 'My Name'
email 'My Email'
我在我的 Jenkins 服务器上使用它,它运行良好。 我也希望它关闭并释放工件...... 我该怎么做?
【问题讨论】:
你说的close是什么意思? 手动过程是上传,关闭...发布。 什么是Os-s-rH_USER_NAME
? sonatype 登录到网站凭据?或来自oss.sonatype.org/#profile;User%20Token 的令牌和密码?
字面的 sonatype 登录用户名
【参考方案1】:
您可以在脚本中使用gradle-release。它的工作方式类似于 maven-release-plugin(从版本中删除 SNAPSHOT、构建、创建标签、部署工件并更新到下一个开发版本):
apply plugin: 'net.researchgate.release'
在 Jenkins 中,使用 release plugin,您需要配置 unattended release:
gradle release -Prelease.useAutomaticVersion=true \
-Prelease.releaseVersion=$VERSION \
-Prelease.newVersion=$NEXT_VERSION
【讨论】:
这个插件可以从多项目的 gradle 项目构建工件,上传到 Maven 中心,关闭和发布暂存仓库?【参考方案2】:解决方案是将以下内容添加到根 build.gradle 文件中:
ext."oss-releases.username" = System.getenv('Os-s-rH_USER_NAME')
ext."oss-releases.password" = System.getenv('Os-s-rH_PASSWORD')
ext."oss-releases.url" = "https://oss.sonatype.org/index.html#stagingRepositories"
apply plugin: 'nexus-workflow'
并从命令行运行以下命令:
bash gradlew nexusStagingRelease
完成!
【讨论】:
以上是关于使用 gradle 在 maven Central 上关闭和释放工件的主要内容,如果未能解决你的问题,请参考以下文章
如何让我的 gradle 测试任务为不在 maven Central 上的库使用 python pip install?
如何在android gradle构建文件中为从maven Central提取的库指定injars
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central