上傳自己的jar包到maven中央倉庫的快速操作方法
(一)概述
現(xiàn)在網(wǎng)絡(luò)上已經(jīng)有不少上傳jar包至中央倉庫的教程,但是我搜了一大圈之后發(fā)現(xiàn)當(dāng)時的做法目前并不適用,因此決定自己寫下上傳jar包至中央倉庫的方式,寫這篇文章的時間是2021年8月18日。
(二)注冊jira
本文檔通過sonatype上傳jar包至maven中央倉庫,Sonatype通過JIRA來管理OSSRH倉庫,因此首先注冊jira賬號
https://issues.sonatype.org/secure/Signup!default.jspa

(三)發(fā)布申請
jira創(chuàng)建完成后,我們需要提一個上傳jar包的申請:
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
其中概要和描述可以自己隨便寫一點關(guān)于要上傳項目的詳情,groupId填寫自己的域名,如果沒有的話可以填io.github.[你的github賬戶名],另外兩個必填項填寫項目的git地址


創(chuàng)建完成之后,會有人對你的請求做處理,并在注釋中給出意見,如果通過的話,這個問題的狀態(tài)就會變成已解決

(四)發(fā)布項目
當(dāng)請求通過后,處理人員會發(fā)過來處理成功的消息,同時會帶上發(fā)布項目的教程地址:
https://central.sonatype.org/publish/publish-guide/#deployment
雖然這個教程中貼上了很詳細(xì)的過程,但是因為全英文,而且還有點亂,因此我在這篇文章中發(fā)布一次
4.1 安裝配置gpg
發(fā)布到Maven倉庫中的所有文件都要使用GPG簽名,以保障完整性,因此我們需要先創(chuàng)建GPG,下載GPG
https//www.gnupg.org/download/
安裝過程就一路next就行,安裝完成之后在命令行輸入gpg --version,如果彈出具體的版本號就說明安裝成功。
通過gpg --gen-key命令生成密鑰,期間會輸入用戶名、郵箱和密碼,記住自己的密碼。
生成之后通過gpg --list-keys查看密鑰,pub下的一連串字符就是公鑰,將這串公鑰發(fā)布到密鑰服務(wù)器:
gpg --keyserver keyserver.ubuntu.com --send-keys 你的密鑰
發(fā)送完成后提示發(fā)送成功
4.2 配置maven的setting.xml
setting.xml是maven的配置文件,放在本地,你可以通過idea的setting找到當(dāng)前項目對應(yīng)的setting.xml文件路徑

部署ossrh身份認(rèn)證信息:
<settings>
<servers>
<server>
<id>ossrh</id>
<username>your-jira-id</username>
<password>your-jira-pwd</password>
</server>
</servers>
</settings>
至此,setting.xml配置就結(jié)束了
4.3 配置pom文件
接下來配置項目的pom文件:
首先填寫項目相關(guān)的信息,比如groupId,developers等等,這一塊每個人都不同,這里就不做過多講解,注意!groupId必須和你提交jira時填寫的一樣,不然怎么都傳不上去。下面僅供參考:
<groupId>io.github.oliverliy</groupId>
<artifactId>fast-sso</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<name>fast-sso</name>
<url>https://github.com/OliverLiy/fast-sso</url>
<description>一個可快速接入的sso項目</description>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<scm>
<url>https://github.com/OliverLiy/fast-sso</url>
<connection>https://github.com/OliverLiy/fast-sso.git</connection>
</scm>
<modules>
<module>fast-sso-client</module>
<module>fast-sso-server</module>
<module>fast-sso-example</module>
</modules>
<developers>
<developer>
<name>javayz</name>
<id>javayz</id>
<email>974474148@qq.com</email>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
<properties>
<springboot.version>2.2.0.RELEASE</springboot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
配置distributionManagement,自 2021 年 2 月起,所有的新項目都配置在https://s01.oss.sonatype.org/上,因此下面的配置在一些2021年之前的博客中都是不一樣的。
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
接著配置打包插件、 javadoc 和源 Maven 插件、Maven GPG 插件
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<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>
<!-- jdk1.8要加上,1.7要去掉,否則會報錯 -->
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<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>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
最后提供一份完整的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.oliverliy</groupId>
<artifactId>fast-sso</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<name>fast-sso</name>
<url>https://github.com/OliverLiy/fast-sso</url>
<description>一個可快速接入的sso項目</description>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<scm>
<url>https://github.com/OliverLiy/fast-sso</url>
<connection>https://github.com/OliverLiy/fast-sso.git</connection>
</scm>
<modules>
<module>fast-sso-client</module>
<module>fast-sso-server</module>
<module>fast-sso-example</module>
</modules>
<developers>
<developer>
<name>javayz</name>
<id>javayz</id>
<email>974474148@qq.com</email>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
<properties>
<springboot.version>2.2.0.RELEASE</springboot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<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>
<!-- jdk1.8要加上,1.7要去掉,否則會報錯 -->
<additionalJOptions>
<additionalJOption>-Xdoclint:none</additionalJOption>
</additionalJOptions>
</configuration>
<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>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
4.4 打包上傳
最后一步就比較簡單了,在當(dāng)前目錄下執(zhí)行deploy命令
mvn clean deploy
稍等片刻,提示build success后即表示打包成功
(五)發(fā)布
上面執(zhí)行完成之后,登陸nexus:https://s01.oss.sonatype.org/#stagingRepositories,登上jira賬號之后就能看到我們剛剛發(fā)布的內(nèi)容

選中后點擊上方的Close,他會檢測你的jar包是否存在問題,如果存在問題,點擊下方的Activity即可查看具體的問題,主要影響release的問題大部分都是打包時漏了一些東西,照著問題修復(fù)即可。
檢測完成后上方的release就會變成可點擊的狀態(tài),點擊release后,你會收到一份郵件

郵件的意思是大概30分鐘可以同步到maven倉庫,大概4個小時可以在search.maven.org中搜到?,F(xiàn)在我已經(jīng)能在中央倉庫看到自己的jar包了。你的jar包就能被別人使用了。

(六)總結(jié)
為什么要搗鼓這個東西呢?因為最近正在寫一個有關(guān)統(tǒng)一認(rèn)證的開源項目,需要上傳jar包至中央倉庫。這個開源項目的目的是為了能讓項目通過簡單的一些配置就可以快速接入統(tǒng)一認(rèn)證系統(tǒng),因此我給這個項目取名fast-sso,之后會發(fā)一個初始版本出來。我是魚仔,我們下期再見!
到此這篇關(guān)于上傳自己的jar包到maven中央倉庫的快速操作方法的文章就介紹到這了,更多相關(guān)jar包上傳maven中央倉庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談Java 類中各成分加載順序和內(nèi)存中的存放位置
下面小編就為大家?guī)硪黄獪\談Java 類中各成分加載順序和內(nèi)存中的存放位置。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
Win10 Java jdk14.0.2安裝及環(huán)境變量配置詳細(xì)教程
這篇文章主要介紹了Win10 Java jdk14.0.2安裝及環(huán)境變量配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
JavaWeb文件上傳下載實例講解(酷炫的文件上傳技術(shù))
在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳功能是非常常用的功能,今天來主要講講JavaWeb中的文件上傳功能的相關(guān)技術(shù)實現(xiàn),本文給大家介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧2016-11-11
Spring @Valid @Validated實現(xiàn)驗證
這篇文章主要介紹了Spring @Valid @Validated實現(xiàn)驗證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

