本文主要介绍如何一个由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 central@sonatype.com 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'
```

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:git@github.com:username/project.git'
developerConnection 'scm:git:git@github.com: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 'manfred@sonatype.com'
}
}
}
}
}
}
```

编写gradle.properties

主要是将一些认证信息填在这里。(这些信息不要加入到版本管理中)。

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

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

生成GPG加密信息

windows中可以安装gpg4win来生成相关信息。但是我个人在windows10中并没有能够打开。
所以我使用了WSL来生成相关信息。如果你的系统是Linux也可以。

  1. 执行gpg --gen-key, 按照提示的信息填入密码,用户名等信息,这些信息记录下来。这里填入的密码就是上面gradle.properties中的signing.password
  2. 执行gpg --list-keys, 可以看到

    ```

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

  3. 第一行便是对应的公钥文件位置,pug后面的B98765便是public key Id,这个id也就是上面gradle.properties中的signing.keyId
  4. 执行 gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys B98765将公钥发送到hkp://pool.sks-keyservers.net
  5. 记录下/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库中的更多相关文章

  1. 【重要】将项目发布到Maven中央库

    http://www.ruanyifeng.com/blog/2013/07/gpg.html

  2. 将Gradle项目发布到Jcenter和Maven Central

    Jcenter和Maven Central 为了方便我们理解Android studio是如何帮助我们获取开源库的,我们需要理清几个概念.Apache Maven是Apache开发的一个工具,提供了用 ...

  3. 把自己的项目发布到maven仓库并在maven和gradle中开始使用

    把自己的项目发布到maven仓库并在maven和gradle中开始使用 上一条博客中提到的日志打印项目总算是维护的差不多了, 不过现在使用它还是打成jar包放到其他项目内, 所以决定把项目传到mave ...

  4. 将Gradle项目公布到maven仓库

    将Gradle项目公布到maven仓库 1 Gradle简单介绍 1.1 Ant.Maven还是Gradle? 1.1.1 Ant和Maven介绍 全称为Apache Maven,是一个软件(特别是J ...

  5. 将项目发布到Maven中央仓库的不完整纪要

    背景 有几个Utils性质的Jar需要跨项目引用,原本想部署私有Maven仓库,后来感觉太麻烦,索性直接发布到中央库,引用时也方便. 发布成功之后,觉得某些细节还是有必要记录一下. 资源 Sonaty ...

  6. gradle 项目转成maven项目

    找到一个个子项目目录下的build.gradle文件,在文件开头添加以下内容: apply plugin: 'java' apply plugin: 'maven' compileJava.optio ...

  7. 从零开始把项目发布到maven仓库中心

    sonatype准备操作 注册账号 https://issues.sonatype.org 1. 密码符号规范,并且工记住 新建项目 1. group id 如果你有com域名的所有权可以直接使用,如 ...

  8. 搜索maven的库中某个支持库的的最新版本

    首先放网址(建议挂个vpn): maven库中心:http://search.maven.org/ jcenter库中心:https://bintray.com/bintray/jcenter 接下来 ...

  9. maven官方库中没有oracle jdbc驱动的问题解决

    1.找到可用的oracle jdbs驱动jar包文件,放置到指定目录(可根据实际自定义) D:\jdbc\ojdbc14.jar 2.安装好maven,主要是配置好环境变量 MAVEN_HOME='指 ...

随机推荐

  1. 深入浅出 Java Concurrency (22): 并发容器 part 7 可阻塞的BlockingQueue (2)[转]

    在上一节中详细分析了LinkedBlockingQueue 的实现原理.实现一个可扩展的队列通常有两种方式:一种方式就像LinkedBlockingQueue一样使用链表,也就是每一个元素带有下一个元 ...

  2. MyBatis Plus之like模糊查询中包含有特殊字符(_、\、%)

    传统的解决思路:自定义一个拦截器,当有模糊查询时,模糊查询的关键字中包含有上述特殊字符时,在该特殊字符前添加\进行转义处理. 新的解决思路:将like 替换为 MySQL内置函数locate函数 参考 ...

  3. Spring Boot 容器选择 Undertow 而不是 Tomcat Spring Boot 内嵌容器Unde

    Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动 ...

  4. 两周的业余时间,写了个简单的shell

    Linux下的,环境是 Fedora 实现了基本的内部命令功能,及比较完善的内部命令框架. 类似于MFC消息映射表的方式,写完一个内部命令,只需要向这个头文件中,导入一个头文件,再写入命令处理函数,就 ...

  5. LINUX对于未安装的软件包的查看

    查看的前提是您有一个.rpm 的文件,也就是说对既有软件file.rpm的查看等: 1.查看一个软件包的用途.版本等信息: 语法: rpm -qpi file.rpm 举例: [root@localh ...

  6. java时间戳和PHP时间戳的转换问题

    由于精度不同,导致长度不一致,直接转换错误.  JAVA时间戳长度是13位,PHP时间戳长度是10位.主要最后三位的不同. 方法,截取前10位,substr($time,0,10);

  7. GitBook的使用方法

    ---恢复内容开始--- 由于近期工作中使用gitbook编写讲义,现把出现的问题总结下: 1 . gitbook的安装 Gitbook与word等办公软件类似,能够编写文档,Gitbook中编写文档 ...

  8. script节点上的onload和onreadystatechange事件

    http://dafeizizhu.github.io/2013/11/25/onload-vs-onreadystatechange/ http://www.cnblogs.com/snandy/a ...

  9. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---命令模式之SimpleRemoteWithUndoTest[转]

    命令模式可以很轻松的实现撤销(Undo)功能. 命令的接受者:  1unit uReceiveObject;  2  3interface  4  5type  6  TLight = class(T ...

  10. 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输

    /// <summary> /// 返回JSon数据 /// </summary> /// <param name="JSONData">要处理 ...