如何發佈jar包到maven中央倉庫詳細教程

介紹

java開發中沒少用各類jar包,特別是使用maven,gradle 構建工具,方便有效。老是隻取不予,也應該懂得奉獻,當你寫好了一個十分好用的jar包,想貢獻出去給你們使用的時候,應該怎麼作呢?固然是發佈到maven的中央倉庫了html

開始要注意這個幾個Maven相關地址java

就是申請上傳資格和groupId 的地方,註冊帳號、建立和管理issue,Jar包的發佈是以解決issue的方式起步的git

把jar包上傳到這裏,Release 以後就會同步到maven中央倉庫。github

最終工件能夠在這裏搜索到。apache

操做

註冊工單管理(register sonatype)

第一訪問工單管理界面,須要提早註冊(sign up), 它是工單管理和構建倉庫身份驗證.點擊"Sign up "json

建立工單(nexus)

點擊header 頭 「create」按鈕建立一個工單,主要用途註冊你上傳jar包基本信息,主要groupid,經過審覈有兩個目的:1.防止重複,約束groupid規範,定義grupid最好有所屬的域名

好比:你申請 com.hippo 那麼你最有有hippo.com 這個域名的全部權。若是你不符合還有一個解決辦法,groupid 申請以:com.github.{帳號名來定義}ubuntu

建立

建立成功後,接下來等待後臺管理員審覈,通常一個工做日之內,當Issue的Status變爲RESOLVED後,就能夠進行下一步操做了,不然,就等待… 輸入圖片說明segmentfault

審批經過後,一般管理員會給你留言配置方法,大致文字以下:windows

Configuration has been prepared, now you can:
Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshots
Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2
Promote staged artifacts into repository 'Releases'
Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/public
Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/staging
please comment on this ticket when you promoted your first release, thanks

配置已經準備好了,如今你能夠: 將快照構件部署到存儲庫https://oss.sonatype.org/content/repositories/snapshots 將發佈工件部署到分段存儲庫中https://oss.sonatype.org/service/local/staging/deploy/maven2 將分階段的工件推入存儲庫「發佈」 從組https://oss.sonatype.org/content/groups/public下載快照併發布工件 從暫存組https://oss.sonatype.org/content/groups/staging下載快照,發佈和暫存的工件 請在您宣傳第一個版本時對此票發表評論,謝謝bash

配置項目工程pom.xml

在工程的pom.xml文件中,引入Sonatype官方的一個通用配置oss-parent,這樣作的好處是不少pom.xml的發佈配置不須要本身配置了

<parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>

並增長Licenses、SCM、Developers信息

<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>
    <scm>
        <tag>master</tag>
        <url>git@github.com:cloudnil/marathon-client.git</url>
        <connection>scm:git:git@github.com:cloudnil/marathon-client.git</connection>
        <developerConnection>scm:git:git@github.com:cloudnil/marathon-client.git</developerConnection>
    </scm>
    <developers>
        <developer>
            <name>cloudnil</name>
            <email>cloudnil@126.com</email>
            <organization>CloudNil</organization>
        </developer>
    </developers>

配置Maven setting.xml

setting.xml放在Maven安裝文件/conf目錄下

<servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>Sonatype 帳號</username>
      <password>Sonatype 密碼</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>Sonatype 帳號</username>
      <password>Sonatype 密碼</password>
    </server>
  </servers>

配置gpg-key

若是是使用的windows,建議下載git客戶端,能夠在git bash 提供窗口操做,在命令行中執行 ** gpg --gen-key** 生成,過程當中須要填寫名字、郵箱等,其餘步驟可使用默認值,不過有個叫:Passphase的參數須要記住,這個至關因而是密鑰的密碼,下一步發佈過程當中進行簽名操做的時候會用到

輸入圖片說明

Deploy部署

這步就簡單了,就是一套命令:

mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=密鑰密碼"

默認啓動:maven-javadoc-plugin 插件 若是要忽略,能夠跟參數:

-Dmaven.javadoc.skip=true

Release發行

進入https://oss.sonatype.org/#stagingRepositories查看發佈好的構件,點擊左側的Staging Repositories,通常最後一個就是剛剛發佈的jar了,此時的構件狀態爲open。 打開命令行窗口,查看gpg key並上傳到第三方的key驗證庫:

gpg --list-keys
C:/Users/VF/AppData/Roaming/gnupg/pubring.gpg
---------------------------------------------
pub   2048R/824B4D7A 2016-01-06
uid       [ultimate] cloudnil <cloudnil@126.com>
sub   2048R/7A10AD69 2016-01-06

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 824B4D7A
gpg: sending key 824B4D7A to hkp server keyserver.ubuntu.com

輸入圖片說明

以上操做完成回到 https://oss.sonatype.org/#stagingRepositories,選中剛纔發佈的構件,並點擊上方的close–>Confirm,在下邊的Activity選項卡中查看狀態,當狀態變成closed後,執行Release–>Confirm,並在下邊的Activity選項卡中查看狀態,成功後構件自動刪除,一小段時間(約1-2個小時)後便可同步到maven的中央倉庫。

參考資料

相關文章
相關標籤/搜索