使用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 |
更多的請參考@黃勇 的博客(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 > |
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