註冊地址:https://issues.sonatype.org/secure/Signup!default.jspajava
使用了JIRA來管理流程,記住用戶名和密碼,後面會用到。git
登陸進入後,create Issuegithub
以後回收到評論:apache
若是是你的域名你就能夠回覆,xxx.com is my domain 完了等待審覈,通常一天時間;api
審覈經過後工做人員會回覆以下:xcode
下載gpg4win:http://files.gpg4win.org/服務器
選(帶vanilla的) gpg4win-vanilla-2.3.4.exe網絡
gpg --version
gpg --gen-key
會讓你選擇加密的方式:dom
lease select what kind (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only)
選1,以後往下,會讓你輸入用戶名和郵箱,還有一個Passphase,至關於密鑰庫密碼,不要忘記jsp
gpg --list-keys
pub 2048R/99F1B186 2018-02-02 uid [ultimate] YaleRen (hello) <royal8848@163.com> sub 2048R/DBD61A9E 2018-02-02
99F1B186
就是公鑰ID
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 99F1B186
此後,可以使用本地的私鑰來對上傳構件進行數字簽名,而下載該構件的用戶可經過上傳的公鑰來驗證簽名,也就是說,你們能夠驗證這個構件是否由本人上傳的,由於有可能該構件被壞人給篡改了
#: gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 99F1B186 gpg: requesting key 99F1B186 from hkp server pool.sks-keyservers.net gpg: key 99F1B186: "YaleRen (hello) <royal8848@163.com>" not changed gpg: Total number processed: 1 gpg: unchanged: 1
找到maven的全局配置文件settings.xml,在裏面找到 節點,這個節點默認是註釋掉的,增長以下配置:
<servers> <server> <id>oss</id> <username>Sonatype 用戶名</username> <password>Sonatype 密碼</password> </server> </servers>
<project> ... <name>dexcoder-assistant</name> <description>dexcoder-assistant is a rapid development kit.</description> <url>http://www.dexcoder.com/</url> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>selfly</name> <email>selfly@foxmail.com</email> </developer> </developers> <scm> <connection>scm:git:git@github.com:selfly/dexcoder-assistant.git</connection> <developerConnection>scm:git:git@github.com:selfly/dexcoder-assistant.git</developerConnection> <url>git@github.com:selfly/dexcoder-assistant.git</url> </scm> ... <profiles> <profile> <id>release</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <skip>true</skip> </configuration> </plugin> <!-- 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>oss</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository> <repository> <id>oss</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標籤。
mvn clean deploy -Dmaven.test.skip=true -P release
當執行以上 Maven 命令時,會自動彈出一個對話框,須要輸入上面提到的 Passphase,它就是剛纔設置的 GPG 密鑰庫的密碼。
隨後會看到大量的 upload 信息,由於在國內網絡的緣故,時間有點久,耐心等待吧。
注意:此時上傳的構件並未正式發佈到中央倉庫中,只是部署到 OSS 中了,下面纔是真正的發佈。
在 OSS 中,使用本身的 Sonatype 帳號登陸後,可在 Staging Repositories 中查看剛纔已上傳的構件,這些構件目前是放在 Staging 倉庫中,可進行模糊查詢,快速定位到本身的構件(要拉到最下面
)。
此時,該構件的狀態爲 Open,須要勾選它,而後點擊 Close 按鈕。系統會自動驗證該構件是否知足指定要求,當驗證完畢後,狀態會變爲 Closed
最後,點擊 Release 按鈕來發布該構件
這裏頁面可能要刷新一下才能看到新的狀態。
這個前面的Sonatype工做人員其實在審覈你的Issue時,在comment中已經提示你了,My repository had released!
在Issue下面回覆一條「構件已成功發佈」的評論,這是爲了通知 Sonatype 的工做人員爲須要發佈的構件作審批,發佈後會關閉該Issue。
這個,又只能等待了,固然他們晚上上班,仍是次日看。當審批經過後,將會收到郵件通知。
這時,就能夠在maven的中央倉庫中搜索到本身發佈的構件了,之後能夠直接在pom.xml中使用了!
中央倉庫搜索網站:http://search.maven.org/
第一次成功發佈以後,之後就不用這麼麻煩了,能夠直接使用Group Id發佈任何的構件,固然前提是Group Id沒有變。
之後的發佈流程:
a)構件完成後直接使用maven在命令行上傳構建;
b)在https://oss.sonatype.org/ close並release構件;
c)等待同步好(大約2小時多)以後,就可使用了