如何把jar包發佈到中央倉庫

一、在網站https://issues.sonatype.org/s...(請記住對應的帳號和密碼,以後須要用到)
此外,Sonatype 還提供了一個名爲OSS 的系統,具體的構件發佈是在這個oss系統上,html

Sonatype OSS 地址:https://oss.sonatype.org
這裏的用戶名和密碼就是上面在JIRA中註冊的,在這裏能夠查詢到全世界已發佈的構件,固然咱們發佈構件的操做也在這裏進行。java

二、登陸後選擇後選擇Create
圖片描述
Project:項目默認值
IssueType:默認值
Summary:說明,請介紹一下項目
GroupId:項目的分組名稱
ProjectURL:訪問項目的URL,寫倉庫地址
SCMurl:訪問項目的URL,寫倉庫地址
其餘的選填
填寫完畢後點擊Create,而後等待狀態變成RESOLVED,以下圖
圖片描述
Comments的回覆以下:
圖片描述
三、使用GPG 生成密鑰對
Windows系統直接去https://www.gpg4win.org/downl...,安裝好後經過gpg --version,出現版本等信息就安裝成功了。若是是Linux,能夠經過yum install gpg安裝)
圖片描述
生成密鑰對,在cmd窗口中輸入命令:
gpg --gen-key
提示輸入:
Real name
Email address
根據提示輸入大寫O確認無誤
而後彈出一個輸入密碼的對話框,請務必記住該密碼
圖片描述
輸入密碼確認
查看公鑰
gpg --list-keys
圖片描述
將公鑰發佈到 PGP 密鑰服務器(gpg --list-keys能夠看到公鑰id)
gpg--keyserver hkp://pool.sks-keyservers.net --send-keys 5292CC898762C9D1237A561608DE5FBA6F7142E6
gpg--keyserver hkp://keyserver.ubuntu.com:11371 --send-keys5292CC898762C9D1237A561608DE5FBA6F7142E6
圖片描述
查詢公鑰是否發佈成功
gpg --keyserverhkp://pool.sks-keyservers.net --recv-keys 5292CC898762C9D1237A561608DE5FBA6F7142E6
圖片描述
四、修改Maven配置文件,須要同時修改全局的setting.xml和項目的pom.xml文件
setting.xml修改:
找到maven的全局配置文件settings.xml,在裏面找到 節點,這個節點默認是註釋掉的,增長以下配置:git

<servers>
<server>
<id> sonatype </id>
<username>用戶名</username>
<password>密碼</password>
</server>
</servers>

這裏的id是要在pom.xml裏面使用的,用戶名和密碼就是在Sonatype上面註冊的用戶名和密碼。apache

pom.xml修改:ubuntu

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
                <modelVersion>4.0.0</modelVersion>
                <groupId>com.gitee.hjj520</groupId>
                <artifactId>payment-core</artifactId>
                <version>0.0.1-RELEASE</version>
                <name>payment-core</name>
                <description>a project aboutpayment</description>
                <url>https://gitee.com/hjj520/payment-core</url>
                <licenses>
                   <license>
                       <name>The ApacheSoftware License, Version 2.0</name>
                       <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
                       <distribution>repo</distribution>
                   </license>
                </licenses>
                <developers>
                   <developer>
                       <name>happyhuangjinjin</name>
                       <email>happyhuangjinjin@sina.com</email>
                   </developer>
                </developers>
                <scm>
                   <tag>master</tag>
                   <connection>https://gitee.com/hjj520/payment-core.git</connection>
                   <developerConnection>https://gitee.com/hjj520/</developerConnection>
                   <url>https://gitee.com/hjj520/payment-core.git</url>
                </scm>
             
                <profiles>
                   <profile>
                       <id>release</id>
                       <build>
                          <plugins>
                              <!-- Source -->
                              <plugin>
                                 <groupId>org.apache.maven.plugins</groupId>
                                 <artifactId>maven-source-plugin</artifactId>
                                 <version>2.2.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.9.1</version>
                                 <executions>
                                     <execution>
                                        <phase>package</phase>
                                        <goals>
                                            <goal>jar</goal>
                                        </goals>
                                     </execution>
                                 </executions>
                              </plugin>
                              <!-- GPG -->
                              <plugin>
                                 <groupId>org.apache.maven.plugins</groupId>
                                 <artifactId>maven-gpg-plugin</artifactId>
                                 <version>1.5</version>
                                 <executions>
                                     <execution>
                                        <phase>verify</phase>
                                        <goals>
                                            <goal>sign</goal>
                                        </goals>
                                     </execution>
                                 </executions>
                              </plugin>
                          </plugins>
                       </build>
                       <distributionManagement>
                          <snapshotRepository>
                              <id>sonatype</id>
                              <url>
                                 https://oss.sonatype.org/content/repositories/snapshots/
                              </url>
                          </snapshotRepository>
                          <repository>
                              <id>sonatype</id>
                              <url>
                                 https://oss.sonatype.org/service/local/staging/deploy/maven2/
                              </url>
                          </repository>
                       </distributionManagement>
                   </profile>
                </profiles>
            </project>

pom.xml中必須包括:name、description、url、licenses、developers、scm等基本信息,使用了 Maven 的 profile 功能,只有在 release 的時候,建立源碼包、文檔包、使用 GPG 進行數字簽名。此外,snapshotRepository 與 repository 中的 id 必定要與 setting.xml 中 server 的 id 保持一致。若是是多模塊項目的話,只須要在父pom.xml中聲明這些,子pom.xml中只須要修改相應的一些信息,如name標籤。服務器

五、上傳構件到 OSS 中
本身配置profiles時使用:
mvn clean deploy -Prelease
使用官網parent時使用:
mvn clean deploy -P sonatype-oss-release-Darguments="gpg.passphrase=密鑰密碼"
當執行以上 Maven 命令時,會自動彈出一個對話框,須要輸入上面提到的 Passphase,它就是剛纔設置的 GPG 密鑰庫的密碼。隨後會看到大量的 upload 信息,由於在國內網絡的緣故,時間有點久,耐心等待吧。網絡

注意:此時上傳的構件並未正式發佈到中央倉庫中,只是部署到 OSS 中了,下面纔是真正的發佈。app

六、在OSS 系統中發佈構件
https://oss.sonatype.org系統中,使用本身的 Sonatype 帳號登陸後,可在 Staging Repositories 中查看剛纔已上傳的構件,這些構件目前是放在Staging 倉庫中,可進行模糊查詢,快速定位到本身的構件。此時,該構件的狀態爲 Open,須要勾選它,而後點擊 Close 按鈕。系統會自動驗證該構件是否知足指定要求,當驗證完畢後,狀態會變爲Closed。
圖片描述
發現release版本纔會出如今Staging Repositories裏,snapshot版本不會出如今這裏
圖片描述
最後,點擊 Release 按鈕來發布該構件
圖片描述jsp

在Staging Profiles能夠看到正在release
七、通知 Sonatype 構件已成功發佈
這個前面的Sonatype工做人員其實在審覈你的Issue時,在comment中已經提示你了,在Issue下面回覆一條「構件已成功發佈」的評論,這是爲了通知 Sonatype 的工做人員爲須要發佈的構件作審批,發佈後會關閉該Issue。maven

等待構件審批經過
這個又只能等待了,固然他們晚上上班,仍是次日看。當審批經過後,將會收到郵件通知。

從中央倉庫中搜索構件
這時,就能夠在maven的中央倉庫中搜索到本身發佈的構件了,之後能夠直接在pom.xml中使用了!
中央倉庫搜索網站:http://search.maven.org/
第一次成功發佈以後,之後就不用這麼麻煩了,能夠直接使用Group Id發佈任何的構件,固然前提是Group Id沒有變。

之後的發佈流程:
a)構件完成後直接使用maven在命令行上傳構建;
b)在https://oss.sonatype.org/clos...
c)等待同步好(大約2小時多)以後,就可使用了

圖片描述
http://blog.csdn.net/hj7jay/a...

相關文章
相關標籤/搜索