2015/07/22

發佈自己寫的Library到Sonatype Nexus Repostiroy

前幾天試著寫了一個jcwutil的專案,其實是在為了今天這篇文章舖梗!

我們寫程式的時候,很常使用別人提供的Library,在Scala的開發中,使用sbt來管理dependencies非常的方便,但是知道怎麼"吃蘋果",別人種得好好的給你吃很方便,但是怎麼"種蘋果"給別人吃(或著是自己吃),就是今天要介紹的。

要做到這件事,主要的步驟如下:

  1. 在GitHub上開個專案寫Code。
  2. 在Sonatype的Jira上開個ticket跟他註冊 (https://issues.sonatype.org/)。
  3. 從開發環境publish至Sonatype的Staging Repository。
    1. 設定PGP的Plugin來幫我們gen key以用來sign我們build出來的Artifact。
    2. 上傳PGP產生出來的public key。
    3. 設定sbt for Sonatype repository。
    4. 發佈Signed過的Artifact至Sonatype的Staging環境。
    5. 在Sonatype的網頁確認自己上傳的內容無誤。(https://oss.sonatype.org/#stagingRepositories)
  4. 確認Repository的內容無誤後,正式發佈。(可使用sbt-sonatype協助正式發佈)
  5. 發佈後再次確認進入release的repository後,記得回覆Jira跟他說已經第一次release完成了,這樣central sync才會被enable哦!

實際操作的方式

第一件事已經做了,寫了個非常簡單的Library - jcwutil (https://github.com/joecwu/jcwutil)

再來是第二步上Sonatype的Jira,填填簡單的基本資料。

我是週末時申請的,大約兩天左右的時候就回覆了。

接下來第三步的細節如下:

第四步就是要正式的Release出去了!可參考官方的步驟
簡單來說就是把Staging裡的temp repository給close然後再release。

這邊有一點要特別注意!
照原本網站上的範例,沒有宣告organization,導致我第一次上傳時的pom裡的groupId是default,所以會無法release。


完成發佈後可以上 https://oss.sonatype.org/content/groups/public/ 去確認東西是否正確的Release。

最後記得要回去Update Jira,告訴Sonatype已經有過first release了,他才會幫你啟用sync到Central Repository!
這是在我回覆他已上傳完成後,他回覆的內容:
Central sync is activated for com.joecwu. After you successfully release, your component will be published to Central, typically within 10 minutes, though updates to search.maven.org can take up to two hours.

Sync完成後,就可以在Maven看到了
https://repo1.maven.org/maven2/com/joecwu/


參考資料



張貼留言

My World