上傳自己的jar包到maven中央倉庫的快速操作方法
(一)概述
現(xiàn)在網(wǎng)絡(luò)上已經(jīng)有不少上傳jar包至中央倉庫的教程,但是我搜了一大圈之后發(fā)現(xiàn)當(dāng)時(shí)的做法目前并不適用,因此決定自己寫下上傳jar包至中央倉庫的方式,寫這篇文章的時(shí)間是2021年8月18日。
(二)注冊(cè)jira
本文檔通過sonatype上傳jar包至maven中央倉庫,Sonatype通過JIRA來管理OSSRH倉庫,因此首先注冊(cè)jira賬號(hào)
https://issues.sonatype.org/secure/Signup!default.jspa
(三)發(fā)布申請(qǐng)
jira創(chuàng)建完成后,我們需要提一個(gè)上傳jar包的申請(qǐng):
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
其中概要和描述可以自己隨便寫一點(diǎn)關(guān)于要上傳項(xiàng)目的詳情,groupId填寫自己的域名,如果沒有的話可以填io.github.[你的github賬戶名],另外兩個(gè)必填項(xiàng)填寫項(xiàng)目的git地址
創(chuàng)建完成之后,會(huì)有人對(duì)你的請(qǐng)求做處理,并在注釋中給出意見,如果通過的話,這個(gè)問題的狀態(tài)就會(huì)變成已解決
(四)發(fā)布項(xiàng)目
當(dāng)請(qǐng)求通過后,處理人員會(huì)發(fā)過來處理成功的消息,同時(shí)會(huì)帶上發(fā)布項(xiàng)目的教程地址:
https://central.sonatype.org/publish/publish-guide/#deployment
雖然這個(gè)教程中貼上了很詳細(xì)的過程,但是因?yàn)槿⑽模疫€有點(diǎn)亂,因此我在這篇文章中發(fā)布一次
4.1 安裝配置gpg
發(fā)布到Maven倉庫中的所有文件都要使用GPG簽名,以保障完整性,因此我們需要先創(chuàng)建GPG,下載GPG
https//www.gnupg.org/download/
安裝過程就一路next就行,安裝完成之后在命令行輸入gpg --version,如果彈出具體的版本號(hào)就說明安裝成功。
通過gpg --gen-key命令生成密鑰,期間會(huì)輸入用戶名、郵箱和密碼,記住自己的密碼。
生成之后通過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)前項(xiàng)目對(duì)應(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文件
接下來配置項(xiàng)目的pom文件:
首先填寫項(xiàng)目相關(guān)的信息,比如groupId,developers等等,這一塊每個(gè)人都不同,這里就不做過多講解,注意!groupId必須和你提交jira時(shí)填寫的一樣,不然怎么都傳不上去。下面僅供參考:
<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>一個(gè)可快速接入的sso項(xiàng)目</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 月起,所有的新項(xiàng)目都配置在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要去掉,否則會(huì)報(bào)錯(cuò) --> <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>一個(gè)可快速接入的sso項(xiàng)目</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要去掉,否則會(huì)報(bào)錯(cuò) --> <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賬號(hào)之后就能看到我們剛剛發(fā)布的內(nèi)容
選中后點(diǎn)擊上方的Close,他會(huì)檢測你的jar包是否存在問題,如果存在問題,點(diǎn)擊下方的Activity即可查看具體的問題,主要影響release的問題大部分都是打包時(shí)漏了一些東西,照著問題修復(fù)即可。
檢測完成后上方的release就會(huì)變成可點(diǎn)擊的狀態(tài),點(diǎn)擊release后,你會(huì)收到一份郵件
郵件的意思是大概30分鐘可以同步到maven倉庫,大概4個(gè)小時(shí)可以在search.maven.org中搜到?,F(xiàn)在我已經(jīng)能在中央倉庫看到自己的jar包了。你的jar包就能被別人使用了。
(六)總結(jié)
為什么要搗鼓這個(gè)東西呢?因?yàn)樽罱趯懸粋€(gè)有關(guān)統(tǒng)一認(rèn)證的開源項(xiàng)目,需要上傳jar包至中央倉庫。這個(gè)開源項(xiàng)目的目的是為了能讓項(xiàng)目通過簡單的一些配置就可以快速接入統(tǒng)一認(rèn)證系統(tǒng),因此我給這個(gè)項(xiàng)目取名fast-sso,之后會(huì)發(fā)一個(gè)初始版本出來。我是魚仔,我們下期再見!
到此這篇關(guān)于上傳自己的jar包到maven中央倉庫的快速操作方法的文章就介紹到這了,更多相關(guān)jar包上傳maven中央倉庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
哈希表在算法題目中的實(shí)際應(yīng)用詳解(Java)
散列表(Hash?table,也叫哈希表)是根據(jù)關(guān)鍵碼值(Key?value)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于哈希表在算法題目中的實(shí)際應(yīng)用,文中介紹的方法是Java,需要的朋友可以參考下2024-03-03淺談Java 類中各成分加載順序和內(nèi)存中的存放位置
下面小編就為大家?guī)硪黄獪\談Java 類中各成分加載順序和內(nèi)存中的存放位置。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02一文徹底弄懂零拷貝原理以及java實(shí)現(xiàn)
零拷貝(英語: Zero-copy) 技術(shù)是指計(jì)算機(jī)執(zhí)行操作時(shí),CPU不需要先將數(shù)據(jù)從某處內(nèi)存復(fù)制到另一個(gè)特定區(qū)域,下面這篇文章主要給大家介紹了關(guān)于零拷貝原理以及java實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2021-08-08Win10 Java jdk14.0.2安裝及環(huán)境變量配置詳細(xì)教程
這篇文章主要介紹了Win10 Java jdk14.0.2安裝及環(huán)境變量配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08JavaWeb文件上傳下載實(shí)例講解(酷炫的文件上傳技術(shù))
在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳功能是非常常用的功能,今天來主要講講JavaWeb中的文件上傳功能的相關(guān)技術(shù)實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11Spring @Valid @Validated實(shí)現(xiàn)驗(yàn)證
這篇文章主要介紹了Spring @Valid @Validated實(shí)現(xiàn)驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01