如何将Android库发布到Maven Central Gradle 7.2.0

3

我正在尝试将我的第一个Android库上传到Maven Central,但是在研究后,我发现没有适用于Gradle 7.2.0的适当文档。我找到了一些链接,但它们也已经过时。

目前为止我所做的事情:

  • 在JIRA上注册
  • 批准了我的项目并获取了访问nexus存储库的权限
  • 生成了GPG密钥

现在需要配置gradle文件:

因此,我遵循了这个库 = https://github.com/vanniktech/gradle-maven-publish-plugin

  1. 在项目根目录下的build.gradle文件中,我已经添加了以下内容:
    buildscript {
        dependencies {
             classpath 'com.vanniktech:gradle-maven-publish-plugin:0.20.0' // NEW
             classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.4.10.2' // NEW
           }
       }

在库的 build.gradle 文件中,我添加了这个插件。
    plugins {
        id 'com.android.library'
        id 'org.jetbrains.kotlin.android'
        id 'com.vanniktech.maven.publish' // NEW
    }
  1. 在项目根目录的gradle.properties文件中,我写了以下内容:
SONATYPE_HOST=S01
RELEASE_SIGNING_ENABLED=true

GROUP=io.github.Darkprnce
POM_ARTIFACT_ID=InnerDrawer
VERSION_NAME=1.0.0

POM_NAME=InnerDrawer
POM_PACKAGING=aar

POM_DESCRIPTION=Inner Drawer is a highly customizable navigation drawer.
POM_INCEPTION_YEAR=2022

POM_URL=https://github.com/Darkprnce/InnerDrawer
POM_SCM_URL=https://github.com/Darkprnce/InnerDrawer
POM_SCM_CONNECTION=scm:git@github.com:Darkprnce/InnerDrawer.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:Darkprnce/InnerDrawer.git

POM_LICENCE_NAME=MIT License
POM_LICENCE_URL=http://www.opensource.org/licenses/mit-license.php
POM_LICENCE_DIST=repo

POM_DEVELOPER_ID=Darkprnce
POM_DEVELOPER_NAME=Tarun Yadvendu
POM_DEVELOPER_URL=https://github.com/Darkprnce


signing.keyId=FCF8EDCA
signing.password=[my signing password]
signing.secretKeyRingFile=secret-keys.gpg
ossrhUsername=[my username]
ossrhPassword=[my password]
  1. 然后在library的build.gradle文件中,我又指定了发布代码的内容。
 publishing {
        repositories {
           maven {
              url = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2"
              credentials {
                  username = ossrhUsername
                  password = ossrhPassword
               }
              }
             }
            }

现在的问题是,当我在终端运行此命令时,它会给出错误的凭据错误。

* What went wrong:
Credentials required for this build could not be resolved.
> The following Gradle properties are missing for 'mavenCentral' credentials:
    - mavenCentralUsername
    - mavenCentralPassword

如果有人使用过这个库,请帮我一下,该库维护得很好,所以不会有问题,我只想知道正确的上传方式。

2
您需要指定 mavenCentralUsernamemavenCentralPassword,但是在您的 gradle.properties 中却有 ossrhUsernameossrhPassword(旧指南?)。 - akarnokd
谢谢@akarnokd,我已经上传了它。一个问题是,如果我像这样上传它,我的用户名和密码会对其他人可见吗?有没有办法隐藏它? - Tarun Yadvendu
只是不要将它们放入上传到GitHub存储库的文件中。在您的本地文件系统上可能有一个~/.gradle/gradle.properties,在那里存储这些密码是安全的。 - akarnokd
请明确,您也不应上传“signing.password”。 - akarnokd
需要签名吗? - Tarun Yadvendu
让我们在聊天中继续这个讨论 - Tarun Yadvendu
1个回答

3

akarnokd 的帮助下,我成功地将我的库上传到了Maven中央仓库。 我采取的步骤如下:

  1. 首先,我在项目根目录下重命名了属性 => gradle.properties

ossrhUsername=[我的用户名] ==> mavenCentralUsername ossrhPassword=[我的密码] ==> mavenCentralPassword

  1. 现在,上述信息对于每个人都是可用的,因为我们只是在一个gradle文件中提供了我们的用户名和密码,而这个文件将随代码一起上传。所以为了防止这种情况发生,akarnokd 建议我在 C:/users/darkprnce/.gradle/gradle.properties 中创建一个新的 gradle.properties 文件,并在其中放置以下信息:
mavenCentralUsername=[my username]
mavenCentralPassword=[my password]

signing.keyId=[last 8 digit of your key]
signing.password=[signing password]
signing.secretKeyRingFile=secring.gpg

  1. 由于发布已经包含在库中,因此我们可以从library build.gradle文件中删除发布操作。

  2. 运行命令

./gradlew publish --no-daemon --no-parallel

它会将库上传到Maven Central,然后您可以关闭存储库并发布它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接