可能不少人都在用maven倉庫,可是若是要問怎麼發佈項目到中央倉庫,估計不少人都不知道了,下面本篇文章帶你們往中央倉庫發佈一個本身的maven項目。java
往maven中央倉庫發佈組件的過程是與Sonatype工做人員交互的過程,這個過程是在Sonatype的JIRA平臺上完成的,過程以下:git
在Sonatype的JIRA註冊
提交一個issue(提出一個發佈申請),告訴工做人員我要建立一個構件。
等待工做人員審批,會給你發郵件,在這個issue下給你comment說明經過或者哪裏有問題。
上傳構件
發佈構建,並在哪一個issue下告訴工做人員我發佈了
等待審覈,若是經過會告訴你須要release一下並在issue上告訴工做人員我release了
發佈成功
後續更新
github
1. 註冊賬戶
註冊地址是 https://issues.sonatype.org/secure/Signup!default.jspaapache
裏邊全部的字段都是必填的,其中email很重要,以後工做人員和你溝通都是經過該郵箱進行的。服務器
2. 建立一個 Issue
地址是 https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134微信
這裏須要特別說明的是Group Id,若是你是託管在Github或者Git@OSC 可使用com.github.XXX或者net.oschina.XXX,我以前註冊了個本身的域名com.qiaoguanhua,因此在此能夠填寫這個group(我實際發佈的是com.github.935237604),剩下的能夠依照實際狀況填寫,例如託管的地址等等(託管地址等信息會在用去去maven倉庫搜索的時候顯示,用來幫助用戶找到你的項目地址尋求幫助)。另外此處填寫的group id必須和你要發佈的組件的pom中的group id同樣,必須同樣!!!
jsp
3. 等待Issue審批
審批就是等着審覈人員告訴你審覈是否經過,若是不經過審覈人員會告訴你不經過的緣由,例如當你用的是本身的域名時(不是github)審覈人員會詢問你域名是不是你的,回覆一下就行,而後工做人員就會給出下圖的回覆:maven
這個是工做人員告訴我已經經過了,能夠去下面那個地址發佈(前兩個地址),發佈後去下面後兩個地址搜索。ui
4. 使用 GPG 生成密鑰對
這個步驟是否是很忽然?GPG是幹嗎的?我開始也很迷茫,後來看官方文檔說是簽名構建用的,貌似爲了保證你的構件不被第三方篡改,用於驗證,神馬原理呢?就是用這個東西在本地生成一個公鑰和一個私鑰,把公鑰上傳上去,當發佈的時候用私鑰簽名一下(這個由maven-gpg-plugin搞定,不用咱們本身來)。步驟以下(此處不詳細介紹安裝,不會安裝的自行百度):url
(1)生成公鑰私鑰
gpg --gen-key
而後一路回車,輸入用戶名、郵箱等,最後重複兩次輸入Passphase(這個在發佈的時候須要,在此牢記)
(2)查看公鑰私鑰
gpg --list-keys
(3)發佈公鑰
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys C990D076(這個C990D076是上一步查看的公鑰ID)
5.修改setting.xml
setting.xml這個文件存在於兩個地方,一個是用戶的Maven配置文件,在${user}/.m2/setting.xml,${user}表示你的用戶目錄,這個文件只對當前用戶有效,另外一個在你Maven安裝目錄的conf/setting.xml文件,這個是全局的配置文件,考慮到個人電腦只有本身用,因此只用全局配置文件添加內容以下:
這裏的用戶名密碼就是咱們在第一部註冊的時候的用戶名和密碼。
6. 修改pom.xml文件
pom.xml在Maven中央庫的審覈比較嚴格,必須有固定的一些字段,還有發佈的構件必須包含字節碼jar、源碼jar、文檔jar,這些均可以經過maven插件搞定,具體這個文件我就不貼了,其中必須字段是:
name
description
url
licenses
developers
scm
貼下個人pom各位能夠作參考:
截圖因爲截不全,因此截了兩張,下面附上代碼:
<profile>
<id>release</id>
<distributionManagement>
<snapshotRepository>
<id>oss</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>oss</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
</distributionManagement>
<build>
<plugins>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Gpg Signature -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
其中:
圖中標註紅色部分的ID必須與setting.xml中的一致,url是提交issue時工做人員給你的,這兩個url通常都是固定的,其餘不用管。
7. 發佈到OSS
這一步主要是生成相應的一些jar包和簽名文件,並上傳到OSS的服務器,命令也比較簡單,命令以下:
mvn clean deploy -P release -Dgpg.passphrase=你的Passphase
其中passphase是第四步生成公鑰私鑰時本身輸入的passphase,用你的passphase替換到此處的passphase便可。
8. 發佈構件
進入https://oss.sonatype.org並登錄,會在左側有個staging Repositories
點擊進入,在右側面板找到你的構件,狀態應該是open,你要將其置爲closed,點擊上方的close
按鈕便可(close的時候可能會遇到一些問題,最多見的就是group id與你提交的不符,通常修改group id從新上傳後便可),close成功後點擊release。圖示:
9. 在Issue中通知工做人員
而後回到JIRA中你的Issue,寫個comment,我寫的是Component has been successfully issued.
告訴工做人員我發佈完成了,等待他們審覈。審覈經過後咱們就能夠在中央庫搜索到咱們的構件了!
10.後續更新
後續若是你的構建更新了只需重複第7、八步從新上傳便可,不須要再通知工做人員了。
11.注意事項
構件發佈成功後並不能第一時間在maven倉庫搜索到,有必定延遲(我第一次發佈時覺得發佈失敗了,反覆詢問工做人員才知道有延遲,並且這個延遲時間很長........大坑啊.....),能夠先去
https://oss.sonatype.org/content/groups/public/
搜索(根據group id一層一層搜索),而後等待一段時間等待maven中央倉庫同步,就能夠在maven中央倉庫搜索到了。
若是在發佈過程當中有任何疑問請加Q1213812243。
本文分享自微信公衆號 - java初學者(JoeKerouac_public)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。