maven發布jar到中央倉庫
一、注冊JIRA帳號
地址:https://issues.sonatype.org/secure/Dashboard.jspa
注意:密碼需要至少8位,同時有大小寫字母,特殊字符和數字
二、創建issue
三、等待審核
域名問題,需要groupId的域名部分屬於自己的域名,在這里使用com.github.duojin
根據一系列對話的指引解決所有問題,地址https://issues.sonatype.org/browse/OSSRH-53957
四、gpg 環境安裝
gpg的主要作用是生成密鑰對,會用於后續我們組件發布的校驗。
1、下載地址: https://www.gnupg.org/download/, 安裝時會附帶安裝UI程序kleopatra
2、在安裝完成后,運行kleopatra程序,新建密鑰對
3、導出證書 發布證書
五、maven 全局配置
默認的maven配置文件為用戶目錄下的 .m2/setting.xml或自己配置后的目錄文件
添加服務器驗證
<server> <id>sonatype_releases</id> <username>your user name</username> <password>your password</password> </server> <server> <id>sonatype_snapshots</id> <username>your user name</username> <password>your password</password> </server>
-
-
用戶名和密碼是第一步中注冊的JIRA的
-
配置gpg驗證命令
<settings> <profiles> <profile> <id>gpg</id> <properties> <gpg.executable>gpg</gpg.executable> <gpg.passphrase>your password</gpg.passphrase> </properties> </profile> </profiles> <activeProfiles> <activeProfile>gpg</activeProfile> </activeProfiles> </settings>
六、項目中的maven配置
- 在項目的pom.xml文件中,配置相應的開源協議、倉庫信息、開發人員信息和發布配置
<!-- 開源簽名證書 --> <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> <connection>scm:git@github.com:duojin/sms-spring-boot-project.git</connection> <developerConnection>scm:git@github.com:duojin/sms-spring-boot-project.git </developerConnection> <url>https://github.com/duojin/sms-spring-boot-project</url> </scm> <!-- 開發人員信息 --> <developers> <developer> <name>ajoe.Liu</name> <email>87893689@qq.com</email> <organization>https://github.com/duojin</organization> <timezone>+8</timezone> </developer> </developers> <!-- 發布管理信息 --> <distributionManagement> <repository> <!-- 這里的id必須要和全局配置中的release id 一致 --> <id>sonatype_releases</id> <name>Nexus Release Repository</name> <!-- 這里就是在創建issue成功后,對方回復的release發布地址--> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> <snapshotRepository> <!-- 這里的id必須要和全局配置中的snapshot id 一致 --> <id>sonatype_snapshots</id> <name>Nexus Snapshot Repository</name> <!-- 這里就是在創建issue成功后,對方回復的snapshot發布地址--> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement>
發布到maven中央倉庫會要求我們在上傳jar到同時,必須同步發布對應到Javadoc、source、asc(利用gpg生成到校驗),所以需要在maven中添加以下構建插件
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- --> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.7</version> <extensions>true</extensions> <configuration> <!-- 這里的id必須要和全局配置中的release id 一致 --> <serverId>sonatype_releases</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <!-- 如果希望發布后自動執行close和release操作,此處可以調整為true --> <autoReleaseAfterClose>false</autoReleaseAfterClose> </configuration> </plugin> <!-- 生成java source.jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.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>2.9.1</version> <configuration> <aggregate>true</aggregate> <charset>UTF-8</charset> <encoding>UTF-8</encoding> <docencoding>UTF-8</docencoding> <!-- -Xdoclint:none maven忽視javadoc過程中警告和錯誤 --> <additionalparam>-Xdoclint:none</additionalparam> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- 生成asc 校驗文件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <!-- 必須和配置中的gpg校驗id一致 --> <id>gpg</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 在項目的pom.xml文件中,配置相應的開源協議、倉庫信息、開發人員信息和發布配置
-
七、打包發布jar到中央倉庫
- 執行以下命令進行發布(如果 pom.xml 中 autoReleaseAfterClose 的值為true,則腳本會自動完成在平台上close、release的操作,至此你將成功發布了,否則我們繼續查看第3步)
測試打包
mvn clean package
發布
mvn clean release
八、驗證
- 登錄https://oss.sonatype.org/index.html#stagingRepositories
九、告知收尾
回復評論、需要發布release版本、jar包才會同步到中央倉庫
-
如果幫到了您,您可以支付寶打賞我哦!
-