【轉】發佈Maven構件到中央倉庫

使用maven有一段時間了,不管你同意與否,我都堅決認定maven是很偉大的軟件項目,使用它,可以節約很多時間,特別是和git搭配使用的時候,簡直就是絕了,就像川菜的花椒和海椒的搭配一樣,無與倫比,用過之後肯定會愛上它的。在我的以前的博客裏面有關於怎樣使用git(eclipse裏面的egit插件)管理項目的說明,下面我就怎樣將構件發佈到maven的中央倉庫進行說明。如果你還不知道什麼事maven或者git(及時你的工作不會使用到它們,但是都應該有所瞭解吧),那真的應該去了解一下了。

這裏需要說明的是,我的發佈過程是參考了開源中國裏面的兩篇博客的(@黃勇 的http://my.oschina.net/huangyong/blog/226738@路小磊 的http://my.oschina.net/looly/blog/270767),在此向他們表示感謝。

閒話不多說,下面正式開始。

1、註冊Sonatype的賬戶

maven中央倉庫是有一個叫做Sonatype的公司在維護的,在發佈構件之前需要到https://issues.sonatype.org/secure/Signup!default.jspa 去註冊一個賬號,記住自己的用戶名和密碼,以後要用。

同時,還要記住一個地址,將來在查詢自己所發佈構件狀態和進行一些操作的時候要使用,https://oss.sonatype.org/ 。

2、提交發布申請

提交申請,在這裏是創建一個issue的形式,創建地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134 。

在填寫issue信息的時候,有一些需要注意的地方:

a)   “group id”就是別人在使用你的構件的時候在pom.xml裏面進行定位的座標的一部分,而且儘量應該是你的站點的url倒序,參考java包命名的規範,有時候工作人員會想你確認你是否是這個站點url的擁有者,這裏由於我已經購買了songxinqiang.cn域名的所有權,所以我填寫的就是“cn.songxinqiang”

b)“project url”這個是項目的站點,一般是用作說明的

c)“SCM url”這個構件的源代碼的url,便於別人查看源代碼,當然這個得是公網能夠訪問的,不要是什麼內部的svn地址什麼的哈,我是用的是開源中國的GIT@OSC,也推薦大家使用

其他的就沒有什麼了,提交之後就等工作人員離開確認吧,有時候工作人員會問你些你沒有明確的內容,只需要回答就好。需要注意的是,這個系統的工作人員是在美國上班的,經過我的等待和觀察,他們會在北京時間的22:00開始上班、處理issue,所以在這個時間之前就不要去查詢狀態了,人家還沒有上班呢(我會告訴你,我在上午9:00左右提交了,每個半小時查看一次直到工作人員回覆我嗎)。

等到工作人員在你創建的issue下面回覆你說“配置已經修改……”(還有幾個鏈接)的時候就說明審批已經通過了,你就可以進行構件的上傳了。

3、上傳之前的準備

在上傳構件之前,需要準備GPG以便對發佈的文件進行簽名。

windows用戶到http://www.gpg4win.org/download.html 去下載Gpg4win-Vanilla版來使用,linux的直接安裝gpg軟件包就行。


?
1
gpg --gen-key
需要輸入姓名、郵箱等字段,其它字段可使用默認值,此外,還需要輸入一個 Passphase,相當於一個密鑰庫的密碼,一定不要忘了,也不要告訴別人,最好記下來,因爲後面會用到。


更多的請參考@黃勇 的博客(http://my.oschina.net/huangyong/blog/226738)。


4、配置maven

找你所使用的maven的配置文件<mvn_home>/conf/settings.xml,在配置文件中找到<servers>節點,這個節點默認是註釋了的,我們就在這個豬似的外邊增加一個<servers>的配置

?
1
2
3
4
5
6
7
<servers>
        <server>
            <id>oss</id>
            <username>用戶名</username>
            <password>密碼</password>
        </server>
    </servers>
這裏的id是將來要在pom.xml裏面使用的,所以務必記好,用戶名和密碼就是在Sonatype上面註冊的用戶名和密碼。


5、配置pom.xml

接下來就是重頭戲了,pom.xml是一個maven項目的重點配置,一個項目的所有配置都可以由這個文件來描述,文件中的所有配置都有默認值,也就是說所有的配置都是可選配置,但是爲了把構件發佈到中央倉庫,我們必須配置一些關鍵信息,否則再發布時是不會通過了。

這些必須明確致命的信息包括:name、description、url、licenses、developers、scm等基本信息,此外,使用了 Maven 的 profile 功能,只有在 release 的時候,創建源碼包、創建文檔包、使用 GPG 進行數字簽名。此外,snapshotRepository 與 repository 中的 id 一定要與 settings.xml 中 server 的 id 保持一致。

大家可以直接繼承自我的一個配置的構件,然後再自己定義一個座標就行了,我的構件座標是:


?
1
2
3
<groupId>cn.songxinqiang</groupId>
<artifactId>oss-parent</artifactId>
<version>1.0</version>

6、上傳構件


待構件編寫完成,就可以進行上傳、發佈了。在命令行進入項目pom.xml所在路徑,執行:


?
1
mvn clean deploy -P release

在稍後些時候會要你輸入gpg密鑰庫的密碼,輸入即可完成上傳,具體時間取決於網絡情況。當然有時候不會彈出輸入密碼的輸入框,只是提示需要輸入密碼,根據gpg插件的官網解釋(http://maven.apache.org/plugins/maven-gpg-plugin/usage.html),需要加上密碼作爲參數執行命令,即:

?
1
mvn clean deploy -P release -Dgpg.passphrase=密碼

7、在OSS中發佈構件

構建上傳之後需要在OSS系統中對操作進行確認,將構件發佈,進入https://oss.sonatype.org/使用你的用戶名和密碼登陸之後,在左邊菜單找到“Staging Repositories”,點擊,在右邊上面一點有一個輸入搜索框輸入你的groupid進行快速定位,可以發現這時你的構件狀態是“open”,勾選你的構件,查看校驗的結果信息,如果沒有錯誤就可以點擊剛纔勾選的checkbox上面右邊一點的“close”按鈕,在彈出框中“confirm”,這裏又需要校驗一次,稍後結果會通過郵箱通知。

等成功後(系統自動進行,很快的),再次登錄系統找到你的構件,這是狀態已經是“closed”的了,再次勾選,然後點擊“close”旁邊的“release”,在彈出框中進行“confirm”,稍後結果會通過郵件進行通知。

8、通知sonatype的工作人員關閉issue

回到issue系統,找到你的那個申請發佈構件的issue,在下面恢復工作人員,說明構件已經發布,帶工作人員確認後,會關閉這個issue。

9、使用構件

一切完成後並不可以馬上就使用你所發佈的issue,得等系統將你的構件同步到中央倉庫之後纔可以使用,這個時間至少要2個小時,然後就可以在中央倉庫的搜索頁面(http://search.maven.org/)搜到你的構件啦,

趕快截圖,向他人炫耀一下吧。

10、特別說明

上面的系統是不是很繁瑣?別擔心,這只是第一次使用你的groupid發佈構件,經實踐證明,第一次成功之後,以後就可以使用你的groupid發佈任何的構件了,只需要你的groupid沒有變就行,(當然不能發佈重複構件哈),不用這麼麻煩。

以後的發佈流程:

a)構件準備好之後,在命令行上傳構建;

b)在https://oss.sonatype.org/ “close”並“release”構件;

c)等待同步好(大約2小時多)之後,就可以使用了


轉自:http://my.oschina.net/songxinqiang/blog/313226

發佈了21 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章