将Gradle项目发布到Maven Central库中

Posted lovollll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Gradle项目发布到Maven Central库中相关的知识,希望对你有一定的参考价值。

本文主要介绍如何一个由gradle构建的项目部署到Maven Central.

网上大部分都是介绍如何将由maven构建的项目部署到Maven Central。与Gradle相关的比较少。

申请账号

前往 sonatype申请账号。

申请完,Create Issue。

按照这个模板填。

这一块比较简单,网上教程也比较多。

Create Issue结束后,官方会需要你证明你拥有相对应的domain。

证明有以下3个途径:

  1. Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-44681 (Fastest)
  2. Setup a redirect to your Github page (if it does not already exist)
  3. Send an email to cent[email protected] referencing this issue from a ... email address

证明完毕之后,你就可以发布包了。

你就可以做下面几件事了:

  1. Deploy snapshot artifacts into repository https://oss.sonatype.org/cont...
  2. Deploy release artifacts into the staging repository https://oss.sonatype.org/serv...
  3. Promote staged artifacts into repository ‘Releases‘
  4. Download snapshot and release artifacts from group https://oss.sonatype.org/cont...
  5. Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/cont...

构建Gradle

下面主要内容基于 官方英文教程,加上一些个人构建时候的一些收获。

build.gralde 文件修改

引入plugin

apply plugin: ‘maven‘
apply plugin: ‘signing‘


<pre><code class="groovy">task javadocJar(type: Jar) {
    classifier = ‘javadoc‘
    from javadoc
}

task sourcesJar(type: Jar) {
    classifier = ‘sources‘
    from sourceSets.main.allSource
}

artifacts {
    archives javadocJar, sourcesJar
}

引入UploadArchives task

引入UploadArchives这个task,记住更改里面的个人相关信息。

其中有ossrhUsernameossrhPassword这两个变量是定义在gradle.properties中的。

uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

        repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
            authentication(userName: ossrhUsername, password: ossrhPassword)
        }

        snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
            authentication(userName: ossrhUsername, password: ossrhPassword)
        }

        pom.project {
            name ‘Example Application‘
            packaging ‘jar‘
            // optionally artifactId can be defined here 
            description ‘A application used as an example on how to set up 
            pushing its components to the Central Repository . ‘
            url ‘http://www.example.com/example-application‘

            scm {
                connection ‘scm:git:[email protected]:username/project.git‘
                developerConnection ‘scm:git:[email protected]:username/project.git‘
                url ‘https://github.com/username/project‘
            }

            licenses {
                license {
                    name ‘The Apache License, Version 2.0‘
                    url ‘http://www.apache.org/licenses/LICENSE-2.0.txt‘
                }
            }

            developers {
                developer {
                    id ‘manfred‘
                    name ‘Manfred Moser‘
                    email ‘[email protected]‘
                }
            }
        }
    }
}

}


<h4>编写gradle.properties</h4>
<p>主要是将一些认证信息填在这里。(这些信息不要加入到版本管理中)。</p>

以下3个信息怎么来下一章节来讲
signing.keyId=YourKeyId
signing.password=YourPublicKeyPassword
signing.secretKeyRingFile=PathToYourKeyRingFile

ossrhUsername=your-jira-id 你在sonatype申请的账号的用户名
ossrhPassword=your-jira-password 你在sonatype申请的账号的密码


<h2>生成GPG加密信息</h2>
<p>windows中可以安装gpg4win来生成相关信息。但是我个人在windows10中并没有能够打开。<br>所以我使用了WSL来生成相关信息。如果你的系统是Linux也可以。</p>
<ol>
<li>执行<code>gpg --gen-key</code>, 按照提示的信息填入密码,用户名等信息,这些信息记录下来。这里填入的密码就是上面<code>gradle.properties</code>中的<code>signing.password</code>。</li>
<li>
<p>执行<code>gpg --list-keys</code>, 可以看到</p>

/root/.gnupg/pubring.gpg
pub 2048R/B98765 2018-12-08
uid
sub 2048R/A123456
```

  • 第一行便是对应的公钥文件位置,pug后面的B98765便是public key Id,这个id也就是上面gradle.properties中的signing.keyId
  • 执行 gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys B98765将公钥发送到hkp://pool.sks-keyservers.net
  • 记录下/root/.gnupg/secring.png的位置,这个位置便是上面gradle.properties中的signing.secretKeyRingFile的值。
  • 发布过程

    当上述步骤全部完成时,可以直接执行gradle uploadArchives

    发布Snapshot版本

    如果你的版本是snapshot的,你可以直接在https://oss.sonatype.org/content/repositories/snapshots中看到你的包。

    发布Release版本

    如果你的版本是release版本。
    登录https://oss.sonatype.org/#welcome,选择Staging Repositories,然后在右边用groupId去搜索。
    这样会找到你的项目。选中你的项目close然后confirm。过一会再来寻找一次该构建,点击Release在Confirm。过一会就应该能在https://oss.sonatype.org/content/groups/public中看到你的项目了。

    注意点

    这里Close可能触发一些错误,可以点击下方的Activity来查看错误的原因。一般来说,可能是并没有javadoc和source导致的。

                原文地址:














    以上是关于将Gradle项目发布到Maven Central库中的主要内容,如果未能解决你的问题,请参考以下文章

    使用 gradle 在 maven Central 上关闭和释放工件

    如何让我的 gradle 测试任务为不在 maven Central 上的库使用 python pip install?

    如何在android gradle构建文件中为从maven Central提取的库指定injars

    如何使用Android Studio把自己的Android library分享到jCenter和Maven Central

    同时将工件部署到 Maven Central 和内部 Nexus

    如何将 maven 工件从 jcenter 同步到 maven Central?