• 104157

    文章

  • 803

    评论

  • 12

    友链

  • 比来新加了换肤功能,大年夜家多来走走吧~~~~
  • 爱好这个网站的同伙可以加一下QQ群,我们一路交换技巧。

Mac应用Gradle上传jar到中心仓库(最完全的采坑记录)

撸了本年阿里、腾讯和美团的面试,我有一个重要发明.......>>

媒介

当我们封装完成我们本身做的对象以后,那我们肯定想要发给他人让他人来停止应用,上传到中心仓库是一种引入时最便利的选择。

网上有很多教程,然则大年夜多都是maven和windows的情况。

明天就来记录一下,在mac上应用gradle上传jar到mvn中心仓库所要踩的坑。

 

大年夜致步调

1、注册issues.sonatype.org
2、创建issue
3、根据issue完成照应操作
4、生成公钥私钥并上传
5、签名打包
6、上传审核
7、下载验证

下面是详细过程

 

注册并创建issue

起首进issues.sonatype.org,然落先行注册,必定要记住用户名暗码
完成登录出来创建issue


留意项:group id假设是本身的域名,就像我如许,那么他会请求让你验证这个域名能否属于你,须要修改dns中的txt类型为一个固定值,他会在issue反应的时辰提出

假设你没有本身的域名,建议直接应用com.github.你的名字,如许的group id,如许不须要验证


创建完成issue以后就根据issue提出的请求一步步完成

须要把你的包发布到snapshot和release仓库去,在这之前你须要生成一个gpg格局的公钥和私钥,用于打包的时辰停止签名。

 

生成公钥和私钥

PS:以后应用的MacOS,windows网上有对应的办法

起首下载对象并装置
https://gpgtools.org/
下载以后不要用界面熟成,应用敕令行操作,操作以下:

1、起首检查能否精确装置
gpg --version

2、生成公钥对
gpg --gen-key
根据提示操作,输入暗码的时辰留意别忘了

3、检查生成的秘钥对
gpg --list-keys --keyid-format short

出现以下所示:


pub rsa2048/00CBBEC9 2019-01-15 [SC] [expires: 2021-01-14]
ADCBD7F4329E51312B8C28641881FCD00DCBBEC9
uid [ultimate] LinkinStar linkinstar@foxmail.com
sub rsa2048/50182126 2019-01-15 [E] [expires: 2021-01-14]

个中的00CBBEC9前面有效,我们临时称为编号

4、导出私钥
gpg --export-secret-keys -o secring.gpg
会在你以后目次生成一个secring.gpg
这个前面有效

5、同步公钥到公网
gpg2 --keyserver hkp://keyserver.ubuntu.com --send-keys 00CBBEC9
他人须要用公钥去验证是你的签名,留意00CBBEC9为下面你的编号

 

上传jar

设备build.gradle,在前面加上以下代码

plugins {
    id 'java'
    // 主如果下面两个插件要加上
    id 'maven-publish'
    id 'signing'
}

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

task javadocJar(type: Jar) {
    from javadoc
    classifier = 'javadoc'
}

javadoc {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
    }
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId project.group
            artifactId project.name
            version "${version}"
            from components.java
            artifact sourcesJar
            artifact javadocJar

            // https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html
            pom {
                name = "http-helper(你的项目称号)"
                description = "easy to send http request(你的项目描述)"
                url = "https://github.com/LinkinStars/http-helper"
                licenses {
                    license {
                        name = "The Apache License, Version 2.0"
                        url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
                    }
                }
                developers {
                    developer {
                        id = "LinkinStar(开辟者id)"
                        name = "LinkinStar(开辟者称号)"
                        email = "linkinstar@foxmail.com(你的邮箱)"
                    }
                }
                scm {
                    connection = "scm:git:https://github.com/LinkinStars/http-helper(你的源码地址)"
                    developerConnection = "scm:git:https://github.com/LinkinStars/http-helper(你的源码地址)"
                    url = "https://github.com/LinkinStars/http-helper(你的源码地址)"
                }
            }
        }
    }
    repositories {
        maven {
            def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
            def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
            // 假设version以SNAPSHOT开头就会上传到快照仓库,假设不是就上传到release仓库
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
            credentials {
                username = "${NEXUS_USERNAME}"
                password = "${NEXUS_PASSWORD}"
            }
        }

    }
}

signing {
    sign publishing.publications.mavenJava
}

 

 

设备gradle.properties
NEXUS_USERNAME=你注册issues.sonatype.org的用户名
NEXUS_PASSWORD=你注册issues.sonatype.org的暗码

signing.keyId=00CBBEC9(你的公钥编号)
signing.password=(你的私钥暗码)
signing.secretKeyRingFile=/Users/LinkinStar/Downloads/secring.gpg(你的私钥存放途径)

 

然后应用publish发布,就是履行gradle的义务

假设没有报错就上传成功了,留意先上传snapshot版本

 

确认上传成功,并上传release版本

进入https://oss.sonatype.org/content/repositories/snapshots/
按照group id去查询你的快照版天性否曾经上传成功

假设发明曾经上传成功,那么证明你成功一半了。
然后根据前一步调停止release版本的上传

上传假设没有成绩,就要正式发布了

登录以下网址检查
https://oss.sonatype.org
在右上角有个登录,应用issues.sonatype.org注册的用户名暗码登录
然后在左边找到

然后在左边的窗口中找到你刚才上传的release版本,应当在最下方

选中以后,点击close

然后鄙人方的activity窗口中可以看到close的过程,假设出现下方如许的情况就掉败了,下方掉败的缘由是由于前面验证缺点,缘由是未将公钥同步到公网

close成功以后,选中以后,点击close旁边的release按钮便可
过一段时间你可以在https://oss.sonatype.org/service/local/staging/deploy/maven2 检查到你上传的包了

 

告诉审核

到这里地位我们曾经完玉成部上传的任务了,记得我们一开端提交的issue吗?
我们如今要告诉管理员我们曾经上传完成了然后他会帮我们审核经过过程,这只是第一次须要如许做,今后就不须要 了。

收到最后的反应就解释全部成功了,等待两个小时阁下,你便可以从中心仓库找到你上传的jar包了。这个时间有长有短。
然后再等一天阁下的时间,你能在mvn的中心仓库网站上看到你的jar了。

 

坑总结

1、不要应用mac的gpg页面停止导出,导出的文件不是我们应用的私钥文件格局不精确
2、version很重要只要以SNAPSHOT开头的才能正常上传到快照仓库
3、留意公钥必定记得同步到公网上去,不然签名验证会掉败
4、早晨中心仓库网速不太好,由于国外这个时辰用的人多,日间速度快一些,轻易上传

 

 

 

 

 


作者:LinkinStar

未经许可,不克不及转载

https://www.cnblogs.com/linkstar/p/10289584.html

 

原文出处:https://www.cnblogs.com/linkstar/p/10289584.html


695856371Web网页设计师②群 | 爱好本站的同伙可以收藏本站,或许参加我们大年夜家一路来交换技巧!

1条评论

Loading...
  • 周涛980L

    你好,参考了你的文章中今后,我履行publish 会出现以下的报错信息: Execution failed for task ':Core:signMavenJavaPublication'. > Cannot perform signing task ':Core:signMavenJavaPublication' because it has no configured signatory 博主之前碰到这个成绩吗?



自定义皮肤 主体内容背景
翻开付出宝扫码付款购买视频教程
碰到成绩接洽客服QQ:419400980
注册梁钟霖小我博客