1 注冊maven(oss)賬號
注冊地址:
https://issues.sonatype.org/secure/Signup!default.jspa
注冊成功后登陸到首頁
2 創建一個Issue
Project: 項目類型,一般為Community Support。
Issue Type: 問題類型, 新的項目為New Project。
Summary:項目名稱,如HASentinel。
Description:項目描述,介紹一下當前項目。
Group Id:對應pom.xml里的group id。如果你有個人或企業的域名,可以為公司的域名,審核時候需要驗證當前域名為本人所有,如com.eeeffff.hasentinel,其中com.eeeffff須為域名eeeffff.com的擁有者,如果沒有可以寫github對應的個人地址(如:com.github.potenstop)
Project URL: 項目的地址,如
https://github.com/fenglibin/HASentinel 。
SCM url:項目對應的下載地址,如
https://github.com/fenglibin/HASentinel .git。
其他保持默認。填寫完成后就可以create了。
3 域名擁有者驗證
項目創建成功后,會有一個項目編輯,如下所示:
然后根據其要求,到域名提供商那里做一條TXT解析,這是最快的一種認證方式:
域名服務商增加該域名eeeffff.com的TXT解析:
記錄值即為為該項目對應的項目代碼值。
4 pgp生產秘鑰key
我的電腦是linux Ubuntu18,Ubuntu本身包含了gpg這個命令,因而不需要額外的下載,如果是其它系統,可能需要下載相應的軟件或命令。
生成加密key,使用命令“gpg --gen-key”:
查看生成的加密Key,使用命令“gpg --list-keys”:
將加密Key推送加遠程加密服務器,此處我推到Ubuntu的加密服務器:
推送如果不報錯,則說明推成功,如果推失敗則多嘗試幾次,或者換一個遠程加密服務器,加密服務器之間會相互同步數據。
查看推送的加密Key:
這步一定要驗證一下,以確保推送真的成功了,如果獲取失敗則多嘗試幾次,我這邊第一次操作就顯示失敗了。
5 配置settings.xml
在maven對應的config目錄下的settings.xml中的services節點下增加一個service節點,配置你當前sonatype的用戶名和密碼,用于后續jar包遠程推送到maven做權限驗證,這里的id要和pom.xml中distributionManagement配置的id要一一對應,如我配置的為
<server>
<id>ossrh</id>
<username>maven_username</username>
<password>maven_password</password>
</server>
6 配置pom.xml
發布到maven倉庫的項目,要求配置如下內容:
name: 項目名稱。
description: 項目描述。
url: 項目地址
licenses: 開源協議。
developers: 開發者列表。
scm: 項目的git地址相關。
profiles: 配置不同的環境。比如開發環境 測試環境 發布環境。
groupId: 定義當前maven項目隸屬的實際項目。
artifactId: 該元素定義實際項目中的一個Maven項目(模塊).
version: 版本號, 帶SNAPSHOT為快照版本,否則為 release 版本。
build: 插件。需要加上maven-source-plugin、maven-JAVAdoc-plugin、maven-gpg-plugin三個插件
dependencies: 依賴的模塊。
pom.xml 配置參考如下截圖及配置代碼所示:
<!-- 配置必須的插件 -->
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven.deploy.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<!-- 配置項目發布的maven倉庫路徑 -->
<distributionManagement>
<repository>
<id>ossrh</id>
<name>Release</name>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<snapshotRepository>
<id>ossrh</id>
<name>SNAPSHOTS</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
7 發布版本
都配置成功后,此時轉到項目的根目錄下,執行如下maven打包及發布命令:
mvn clean source:jar install deploy -Dmaven.test.skip
如果沒有報錯,則輸出如下截圖所示:
此時可以在創建項目的sonatype頁面給負責和你對接的人留言,讓他執行下一步操作,他會告訴你下一步該做什么:
8 在oss查看快照
發布快照版本,只需要在版本號后面加上SNAPSHOT字符串,重新打包即可,Maven會自動判斷當前發布為快照版本,快照版本可以無限次發布,不需要在倉庫中刪除后再發布。
查看地址:
https://s01.oss.sonatype.org
可以根據GroupID搜索對應工程的快照的信息,查看快照是不需要登陸的,如下圖所示。
9 發布和查看release版本
發布release版本只需要去掉版本號后面的的SNAPSHOT,重新執行deploy即可,但是請記住,此時deploy成功并不是真的發到了線上的Maven倉庫,此時相當于發到了一個預發布倉庫,此時需要用戶去執行項目檢查,包括javadoc生成是否符合規范、pom文件是否包含了scm地址等信息、是否通過gpg生成了校驗asc文件等等,如果通不過會有相應的提示,完成這些修改后才能后關閉當前issue,執行真正的發布動作。
查看release版本需要登錄才可以看到, 用戶名和密碼和注冊maven一致。
執行項目檢查的步驟:1)選中一個項目;2)執行上面的Close操作,然后項目會執行規范及安全檢查,如果通過則release按鈕會變得可用,如果檢驗沒有通過,則會有相應的提示信息,需要根據提示修改,在執行下一次執行deploy之前,先通過Drop功能刪除掉當前項目。
校驗不通過大致信息如下所示:
此處展示了三種類型的錯誤:
簽名校驗錯誤;
pom文件校驗錯誤;
Javadoc校驗錯誤。
10 正式同步到Maven中央庫
如果是第一次發布,需要在release成功后在之前的issue添加評論,告知該項目預計release成功。如下圖:
待管理人員正式執行同步,等待一段時間,就可以在maven的正式倉庫中執行到該項目了。
Maven倉庫(https://search.maven.org/)中搜索項目: