自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

發(fā)布了一個jar包到中央倉庫,我的心好累…

開發(fā) 前端
在實(shí)際操作的過程中,有著數(shù)不完的坑,動不動一個點(diǎn)就可能卡住好幾個小時,即便成功發(fā)布了,后續(xù)還有漫長的等待時間,總之就是非常心累…

哈嘍大家好啊,我是Hydra。

前幾天我在網(wǎng)上沖浪的時候,看見有一個老鐵在git上給我提了一個issue:

圖片

萬萬沒想到,有一天我寫的爛代碼居然也會被要求提到中央倉庫…

話再說回來,發(fā)布jar包到中央倉庫這個事,也不是我不想,而是真的不會??!

不過既然鐵子們都開口了,我這硬著頭皮也得上不是?那么從網(wǎng)上翻翻文檔,正式開搞。

Sonatype

首先第一步,我們需要在sonatype上注冊賬號并提交一個issue。

sonatype這個名字,突然一說大家可能有點(diǎn)反應(yīng)不過來,但是看完下面這張圖大家應(yīng)該就明白了:

圖片

沒錯,如果各位所在的公司有搭建自己的maven私服的話,那么一般用的就是sonatype公司開發(fā)的Nexus了。

這時候有小伙伴們估計(jì)就要問了,那么我要上傳中央倉庫和你sonatype又有什么關(guān)系?

這是因?yàn)閟onatype提供了一個服務(wù),英文全稱是Open Source Software Repository Hosting?,翻譯過來可以理解為開源軟件資源庫托管服務(wù),簡稱為OSSRH。

開發(fā)者在把自己的開源項(xiàng)目打成jar包后,可以免費(fèi)地將jar包托管在這里,這里先記住OSSRH這個簡稱,后面很多地方還會用到。

并且,maven中央倉庫是不允許我們直接上傳jar包到它上面的,因此我們只能將jar包發(fā)布到它指定的第三方maven倉庫,然后這個倉庫再將jar包同步到中央倉庫。而sonatype的OSSRH倉庫就是被認(rèn)可的第三方倉庫之一,所以我們選擇把jar包先發(fā)布到這上面來。

1、注冊

鋪墊了這么多,回過頭來注冊sonatype的賬號,注冊地址:

https://issues.sonatype.org/secure/Signup!default.jspa

注冊比較簡單,填一下郵箱、姓名、用戶名和密碼后,點(diǎn)擊sign up就完成了。

圖片

2、提交issue

登錄完成后,語言可以選擇中文,在system dashboard頁面中,點(diǎn)擊上方導(dǎo)航欄上的新建按鈕,就可以創(chuàng)建一個issue,我看也有地方把這個issue稱為工單。

要填的東西有點(diǎn)多,我們分兩頁看,先看第一頁:

圖片

  • 項(xiàng)目:選擇Community Support - Open Source Project Repository Hosting (OSSRH)
  • 問題類型:選擇New Project
  • 概要:項(xiàng)目概要,這里填寫項(xiàng)目名稱就行,如果更嚴(yán)謹(jǐn)?shù)脑?,可以說明是要新發(fā)布一個包到maven
  • 描述:非必填項(xiàng),這里簡單描述了一下項(xiàng)目的功能

填完這些后,接著填下面的內(nèi)容:

圖片

  • Group Id?:項(xiàng)目的groupId?。如果以com?等開頭的話,之后會驗(yàn)證你對該域名的所有權(quán)。所比較簡單的做法是直接以io.github.?開頭,再加上你的github的用戶名,所以這里我填寫的是io.github.trunks2008
  • Project URL?:項(xiàng)目地址,不帶.git結(jié)尾
  • SCM url?:也是項(xiàng)目地址,不過最后要帶上.git
  • Username(s):非必填項(xiàng),這里是能輔助你提交項(xiàng)目的合作人的帳號,前提是他也在這個JIRA注冊過賬號
  • Already Synced to Central?:這里選擇No?,如果選Yes會關(guān)閉自動同步到中央倉庫

填寫完成后,點(diǎn)新建按鈕就完成了issue的提交。

3、創(chuàng)建臨時庫

創(chuàng)建完issue后等個幾分鐘,在它的活動日志區(qū)就會收到一條回復(fù):

圖片

大意就是,如果想要繼續(xù)流程的話,就按照下面兩步走。

首先,先到你的github賬戶下面,按照它指定的名稱,建這么一個臨時倉庫,證明你對這個github賬號的所有權(quán)。于是我麻利的在github建好了這個倉庫:

圖片

然后問題就來了,我們仔細(xì)看看回復(fù)中的第二步指南:

Edit this ticket and set Status to Open.

翻譯過來就是,編輯這個票據(jù)并把狀態(tài)設(shè)置為打開狀態(tài)。

可就是這么樸實(shí)無華且枯燥的一句話,把我給難住了。在這條消息回復(fù)里,我把所有能點(diǎn)的地方點(diǎn)了一遍,也沒找到這個所謂的ticket是什么東西。

當(dāng)我的鼠標(biāo)都要點(diǎn)爛了時,終于在別的老哥的提示下找到了答案,是要點(diǎn)擊這個issue中的這個毫不起眼的Respond按鈕啊!

圖片

說實(shí)話,在沒有人告訴我這是個按鈕之前,我一直以為這玩意就是一個破標(biāo)簽…

在我們把這個issue的狀態(tài)切換回Open后,過個幾分鐘,如果沒有其他問題,那么你就會收到下一條回復(fù):

圖片

收到這條消息,就說明我們的groupId已經(jīng)準(zhǔn)備好可以使用了,并且之后可以用當(dāng)前這個sonatype的賬號發(fā)布snapshot和release版本的jar包到它的oss倉庫中了。

接著看下面一段,根據(jù)構(gòu)建配置,第一個組件可能會在成功部署(deploy)后自動發(fā)布(release)。如果發(fā)生這種情況,那么我們會收到一條消息,來確認(rèn)我們的jar包被同步到了maven中央倉庫。

既然人家都 congratulation 了,那咱們也開心點(diǎn),到這里在sonatype上的操作就暫時告一段落了…

gpg秘鑰

接下來,我們需要使用gpg生成秘鑰,在后續(xù)包發(fā)布jar時會根據(jù)生成的秘鑰進(jìn)行校驗(yàn),因?yàn)閟onatype也需要對上傳這一行為進(jìn)行權(quán)健的校驗(yàn),避免無意義或惡意上傳文件的行為。

1、安裝gpg

官網(wǎng)下載地址:

https://www.gnupg.org/download/

window版下載地址:

https://files.gpg4win.org/gpg4win-4.0.4.exe

我在下載了window版的安裝文件后,一路無腦點(diǎn)擊下一步就可以完成安裝了。

2、創(chuàng)建秘鑰

在安裝完成gpg后,在命令行下通過指令來生成一個秘鑰:

gpg --gen-key

在生成的過程中,首先會要求輸入姓名和郵箱地址,在命令行窗口下填完這兩個信息后,還會彈窗要求輸入一個密碼:

圖片

這個密碼非常重要,一定要記住,后面在項(xiàng)目deploy的時候還會用到。填完后繼續(xù),秘鑰就會成功生成并保存在本地目錄下了:

圖片

3、上傳秘鑰

在秘鑰生成完后,我們需要把公鑰上傳到公共服務(wù)器供sonatype驗(yàn)證,可以通過下面的命令將公鑰上傳:

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys XXXXX

在公鑰上傳成功后,還可以通過--recv-keys來驗(yàn)證公鑰:

圖片

雖然我這里一次就上傳成功了,但是在看其他教程的過程中,也可能會出現(xiàn)失敗的情況,這種情況可以嘗試上傳到其他的存放公鑰的服務(wù)器:

  • pool.sks-keyservers.ne
  • keys.openpgp.org
  • pgp.mit.edu

端口的話都是11371,這些公鑰服務(wù)器間會同步它們的數(shù)據(jù)給其他服務(wù)器,所以只要上傳成功到其中一臺就行。

maven 設(shè)置

接下來需要修改本地maven的配置,為了保險起見,我建議大家最好同時修改.m2和conf目錄下的配置文件,否則有可能出現(xiàn)一些奇怪的問題。

1、server

首先在配置文件中添加一個server節(jié)點(diǎn),配置sonatype的用戶名及密碼:

<servers>
<server>
<id>ossrh</id>
<username>${sonatype username}</username>
<password>${sonatype password}</password>
</server>
</servers>

2、profile

接著添加一個profie節(jié)點(diǎn),配置gpg信息,這里就需要填入在生成gpg秘鑰過程中,我們在彈窗中輸入的密碼了:

<profiles>
<profile>
<id>ossrh</id>
<properties>
<gpg.executable>gpg</gpg.executable>
<gpg.passphrase>${彈窗輸入的那個密碼}</gpg.passphrase>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>ossrh</activeProfile>
</activeProfiles>

在修改完成后,可以在命令行窗口下,通過命令查看我們修改過的配置是否已經(jīng)生效了:

mvn help:effective-settings

如果顯示的內(nèi)容和配置文件中的一樣,那么恭喜,后面就只還剩下億點(diǎn)點(diǎn)工作了。

項(xiàng)目pom修改

在maven環(huán)境修改完成后,我們還需要對項(xiàng)目的pom文件進(jìn)行一些修改。

1、基礎(chǔ)信息

如果我們之前的代碼中,groupId?和sonatype上注冊的不一致,那么需要修改項(xiàng)目的groupId?改為一致。既然都要發(fā)布了,順便也把version改為release版本吧。

<groupId>io.github.trunks2008</groupId>
<artifactId>ulquiorra-cache</artifactId>
<version>0.0.1-RELEASE</version>

2、distributionManagement

添加distributionManagement信息,聲明要打包到sonatype的maven倉庫中去。

<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>

3、plugins

這里需要添加各種plugin插件,除了常用的maven-compiler和maven-deploy插件外,還需要下面幾個關(guān)鍵插件:

  • nexus-staging-maven-plugin: sonatype插件,用來將項(xiàng)目發(fā)布到中央倉庫使用
  • maven-source-plugin:生成java source.jar文件
  • maven-javadoc-plugin:生成java doc文檔
  • maven-gpg-plugin:對文件進(jìn)行自動簽名

使用到的全部插件詳細(xì)配置如下,直接拷到項(xiàng)目中就可以使用:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

<!-- sonatype插件,發(fā)布使用-->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>

<!-- 生成java source.jar -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- 生成java doc文檔 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<show>private</show>
<nohelp>true</nohelp>
<charset>UTF-8</charset>
<encoding>UTF-8</encoding>
<docencoding>UTF-8</docencoding>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- 工程文件自動簽名-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>

至于在idea中,插件經(jīng)常下載失敗報紅線的問題,個人測試可以先把它們加到dependencies中拉取下來,成功率能高不少…

4、開源簽名證書

添加license信息,使用Apache Licene 2.0 協(xié)議就行。

<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>

5、倉庫信息

在這里填寫一下項(xiàng)目的地址,把我們的github倉庫地址貼上去就可以了。

<scm>
<url>
https://github.com/trunks2008/ulquiorra-cache
</url>
<connection>
scm:git@github.com/trunks2008/ulquiorra-cache.git
</connection>
<developerConnection>
scm:git@github.com/trunks2008/ulquiorra-cache.git
</developerConnection>
</scm>

6、開發(fā)人員信息

補(bǔ)充開發(fā)者的個人信息,雖然估計(jì)也沒什么人會聯(lián)系我就是了。

<developers>
<developer>
<name>hydra</name>
<email>765666922@qq.com</email>
<organization>https://github.com/trunks2008</organization>
<timezone>+8</timezone>
</developer>
</developers>

在添加完這么多茫茫的信息后,我的pom文件成功的從70行變成了200多行……

發(fā)布

到這里所有的基本工作就都做完了,下面執(zhí)行激動人心的deploy命令!

mvn clean deploy -DskipTests

命令執(zhí)行結(jié)果:

圖片

果然是都到最后一步了,還是不能掉以輕心啊…

查了一下這個報錯,大概就是SSL的問題,修改一下deploy命令的參數(shù)就行~

mvn clean deploy -DskipTests 
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true

再次執(zhí)行命令:

圖片

奇怪的錯誤又出現(xiàn)了…

這次的問題比較簡單,就是項(xiàng)目中的pom中缺失了一些項(xiàng)目信息,修改pom文件,添加下面的信息:

<name>ulquiorra-cache</name>
<description>a tool about bilayer cache</description>
<url>https://github.com/trunks2008/ulquiorra-cache</url>

再次嘗試deploy,終于成功了!

圖片

登錄https://s01.oss.sonatype.org/,看一眼oss倉庫,我們的jar包已經(jīng)上傳成功了。

圖片

你以為到這里就結(jié)束了?恰恰相反,更加漫長的等待才剛剛開始…

漫長的等待

在項(xiàng)目deploy成功后,回到sonatype,活動日志區(qū)很快就會收到一條新消息:

圖片

大意就是sonatype到中央倉庫的同步是激活的,當(dāng)我們成功發(fā)布組件后,通常30分鐘左右就可以在 https://repo1.maven.org/maven2/?上訪問到了,但是更新到https://search.maven.org/可能需要4個小時。

按照這個提示,等半個小時再訪問repo1.maven.org,經(jīng)過一路搜索最后可以找到:

圖片

過四個小時再訪問search.maven.org,果然在上面也可以查找到我的jar包了,sonatype誠不我欺…

圖片

講道理的話,既然發(fā)布成功了,那我們就可以在項(xiàng)目中按照這個maven坐標(biāo)拉取到j(luò)ar包了,但是在項(xiàng)目中就是死活拉不下來…

于是我靈機(jī)一動,改為使用gradle:

dependencies {
implementation("io.github.trunks2008:ulquiorra-cache:0.0.1-RELEASE")
}

你別說,居然真的成功了…

不過話說回來,在日常工作中,我還是更習(xí)慣用https://mvnrepository.com來查找maven依賴,至于什么時候能在上面搜到,我實(shí)測了一下,這個周期真是長的可怕。

在14號就上傳jar包成功后,直到17號才能在mvnrepository上查找到…

圖片

最后

那么,這次不那么順利的踩坑之旅到這里就基本上結(jié)束了,總的來說,發(fā)布jar包到中央倉庫真是個體力活。

在實(shí)際操作的過程中,有著數(shù)不完的坑,動不動一個點(diǎn)就可能卡住好幾個小時,即便成功發(fā)布了,后續(xù)還有漫長的等待時間,總之就是非常心累…

對于那位在git上給我提issue的兄弟,我只有一句話想說…

本文在sonatype上提交的issue,以及提交的項(xiàng)目git地址我都放在下面了,大家如果有需求的話,可以參考一下~

sonatype的issue地址:https://issues.sonatype.org/browse/OSSRH-86180

項(xiàng)目的github地址:https://github.com/trunks2008/ulquiorra-cache

官方文檔指南:https://central.sonatype.org/publish/publish-maven/

責(zé)任編輯:武曉燕 來源: 碼農(nóng)參上
相關(guān)推薦

2022-05-16 08:42:26

Pandasbug

2022-06-08 08:14:27

Dubbo數(shù)據(jù)包源代碼

2021-10-29 11:45:26

Python代碼Python 3.

2020-01-10 09:20:03

手機(jī)ISOJDK

2023-02-21 17:06:49

硬件軟件系統(tǒng)

2014-05-30 14:06:46

2020-11-04 07:56:19

工具Linux 翻譯

2022-08-14 08:29:21

npmNode

2017-12-14 16:55:33

2024-01-26 12:35:25

JavaScript項(xiàng)目軟件包

2020-09-27 14:13:50

Spring BootJava框架

2021-09-13 08:41:52

職場互聯(lián)網(wǎng)自閉

2015-04-19 20:53:30

安華金和數(shù)據(jù)庫安全

2022-05-31 08:35:05

RocketMQACK客戶端

2024-11-11 14:57:56

JWTSession微服務(wù)

2021-09-28 13:42:55

Chrome Devwebsocket網(wǎng)絡(luò)協(xié)議

2023-09-28 13:21:32

2024-05-09 10:26:14

2020-04-03 09:45:09

Java多線程接口

2019-07-08 17:32:27

惠普
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號