将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个途径:
- Add a TXT record to your DNS referencing this JIRA ticket: OSSRH-44681 (Fastest)
- Setup a redirect to your Github page (if it does not already exist)
- Send an email to cent[email protected] referencing this issue from a ... email address
证明完毕之后,你就可以发布包了。
你就可以做下面几件事了:
- Deploy snapshot artifacts into repository https://oss.sonatype.org/cont...
- Deploy release artifacts into the staging repository https://oss.sonatype.org/serv...
- Promote staged artifacts into repository ‘Releases‘
- Download snapshot and release artifacts from group https://oss.sonatype.org/cont...
- 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,记住更改里面的个人相关信息。其中有
ossrhUsername
和ossrhPassword
这两个变量是定义在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=PathToYourKeyRingFileossrhUsername=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