将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 [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导致的。

                原文地址:

    原文地址:https://www.cnblogs.com/lovellll/p/10093894.html

    时间: 2024-08-29 21:44:56

    将Gradle项目发布到Maven Central库中的相关文章

    将Gradle项目公布到maven仓库

    将Gradle项目公布到maven仓库 1 Gradle简单介绍 1.1 Ant.Maven还是Gradle? 1.1.1 Ant和Maven介绍 全称为Apache Maven,是一个软件(特别是Java软件)项目管理及自己主动构建工具,由Apache软件基金会所提供. ?在公布maven之前,android普遍使用ant的方式进行项目的构建和管理.它们均使用XML文件来配置描写叙述项目的,相比較于ant maven提供的功能更加强大. 主要表如今以下几点: - 使用POM的方式来管理和描写叙

    【狂人小白】如何将Java项目发布到Maven中

    将Java项目发布到Maven中 如何通过Sonatype进行发布Maven操作,并且能够在http://search.maven.org 中搜索到关键步骤:1. 申请OSS账号2. 通过gpg创建密钥3. 完善setting.xml和pom.xml4. 发布审核 A. 申请Sonatype账号 注册地址: https://issues.sonatype.org/secure/Signup!default.jspa B. 创建Issue 创建地址: https://issues.sonatype

    gradle项目转成maven项目

    gradle这几年发展迅猛,github越来越多的项目都开始采用gradle来构建了,但是并不是所有人都对gradle很熟悉,下面的方法可以把gradle转成maven项目,前提gradle项目目录结构保持跟maven一样的约定,即/src/main/java这一套. 在build.gradle中增加以下内容(group,version可自行修改,artifactId默认为目录名称) apply plugin: 'java'apply plugin: 'maven' group = 'com.1

    添加本地的jar到maven的库中

    window下添加本地的jar到maven库中,需要电脑上已经搭建好maven环境. 1.运行命令行 2.输入mvn install:install-file -DgroupId=taobao -DartifactId=sc hema -Dversion=1.2.1 -Dpackaging=jar -Dfile=d:\jar\top-schema-1.2.1.jar 3.配置项目中的pom.xml,增加以下节点 <dependency> <groupId>taobao</gr

    gradle 项目转成maven项目

    找到一个个子项目目录下的build.gradle文件,在文件开头添加以下内容: apply plugin: 'java' apply plugin: 'maven' compileJava.options.encoding = 'UTF-8' compileTestJava.options.encoding = 'UTF-8' group = 'com.wonhigh' version = '4.2.7-RELEASE' sourceCompatibility = 1.7 task writeN

    将springboot项目发布到独立的tomcat中运行

    在开发阶段我们推荐使用内嵌的tomcat进行开发,因为这样会方便很多,但是到生成环境,我希望在独立的tomcat容器中运行,因为我们需要对tomcat做额外的优化,这时我们需要将工程打包成war包发进行发布. 1.1. 工程的打包方式为war 1.2. 将spring-boot-starter-tomcat的范围设置为provided 设置为provided是在打包时会将该包排除,因为要放到独立的tomcat中运行,是不需要的. 1 <dependency> 2 3 <groupId&g

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository.如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦.例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦.为了避免这些不必要的麻烦,通常我们会通过Nexus搭建私有的仓库.下面着重介绍下怎么通过mvn命令将程序打包并发布到私有仓库Nexus中.

    [Android]使用Gradle提交自己开源Android库到Maven中心库

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4388175.html 此文针对开源爱好者. 如果你想让别人使用你的Android开源库,第一种方法是,提供你的Github地址,让别人clone一份,然后让别人import到他的项目中.另一种更简单的方式就是直接让别人在他的Gradle中添加你的库依赖,如下: compile 'com.github.wangjiegulu:AndroidBucket:1.0.

    使用Gradle部署jar包到Maven中央库

    Maven作为目前Java界最好的Dependency管理系统,把jar包托管到Maven中央库,然后通过Maven Dependency使用是目前业界各种第三方库的普遍做法,如果,你想把自己开发的一些库分享给别人使用,也可以遵循这样的套路.Gradle可以看做是升级版的Maven,其使用了Maven最优秀的Dependency管理系统,但是,又规避了Maven的build pipeline的刻板和xml格式配置文件等缺点,可以说是目前Java界最好的构建工具.下面就来说说,如何使用Gradle