maven中心倉(cāng)庫(kù)OSSRH使用簡(jiǎn)介(推薦)
文章目錄 簡(jiǎn)介為什么使用中心倉(cāng)庫(kù)發(fā)布到中心倉(cāng)庫(kù)前的準(zhǔn)備工作使用OSSRH使用Sonatype創(chuàng)建ticket中央倉(cāng)庫(kù)中的組件要求提供Javadoc 和源代碼使用GPG/PGP給文件簽名Metadata文件 部署上傳到中央倉(cāng)庫(kù)
簡(jiǎn)介
使用java做項(xiàng)目的朋友肯定對(duì)maven不陌生,maven為我們提供了一個(gè)中心倉(cāng)庫(kù),我們?cè)跇?gòu)建java項(xiàng)目時(shí),直接從maven中心倉(cāng)庫(kù)中下載依賴(lài)的jar包到本地,然后打包進(jìn)行構(gòu)建。
所有人都知道有這樣一個(gè)maven倉(cāng)庫(kù),但是很少有人去探尋這個(gè)maven倉(cāng)庫(kù)到底在什么地方,能不能發(fā)布自己的jar包到中心倉(cāng)庫(kù)呢?今天給大家介紹一下maven中心倉(cāng)庫(kù)和OSSRH的使用。
為什么使用中心倉(cāng)庫(kù)
maven中心倉(cāng)庫(kù)的地址是 https://search.maven.org/#browse , 我們可以通過(guò)該鏈接去查找需要的jar包,而這些jar包都是各個(gè)開(kāi)源組織發(fā)布上去的。
這個(gè)中心倉(cāng)庫(kù)是Apache Maven, SBT 默認(rèn)的repository。同時(shí)還可以支持 Apache Ant/Ivy, Gradle 等構(gòu)建工具的使用。
現(xiàn)在的軟件界是開(kāi)源的軟件界,越來(lái)越多的人和企業(yè)愿意在網(wǎng)絡(luò)上貢獻(xiàn)自己的代碼,于是有了maven社區(qū)的中心倉(cāng)庫(kù),可以方便任何人共享和使用jar包。
發(fā)布到中心倉(cāng)庫(kù)前的準(zhǔn)備工作
發(fā)布到中心倉(cāng)庫(kù)是需要權(quán)限的,我們需要注冊(cè)我們的項(xiàng)目也就是artifacts id,并且指定需要將項(xiàng)目發(fā)布到哪里。
Sonatype 提供了一個(gè)叫做開(kāi)源軟件資源庫(kù)托管Open Source Software Repository Hosting (OSSRH) 的工具,幫助我們來(lái)方便的將項(xiàng)目發(fā)布到中心倉(cāng)庫(kù)中。它是項(xiàng)目所有者和貢獻(xiàn)者將其組件發(fā)布到中央資源庫(kù)的主要途徑。
我們需要選擇一個(gè)你所擁有的domain作為groupId,對(duì)于GitHub groupId(io.github.username),只要您的項(xiàng)目URL與所請(qǐng)求的groupId匹配,就會(huì)立即進(jìn)行驗(yàn)證。
對(duì)于其他的域名,可以通過(guò)下面兩種方式之一來(lái)進(jìn)行域名的驗(yàn)證:
使用TXT文件驗(yàn)證:在域名下創(chuàng)建一個(gè)代表OSSRH ticket number的TXT文件來(lái)進(jìn)行驗(yàn)證。GitHub重定向:設(shè)置你的域名到托管項(xiàng)目的GitHub URL的重定向。
使用OSSRH
Sonatype OSSRH(OSS存儲(chǔ)庫(kù)托管)使用Sonatype Nexus存儲(chǔ)庫(kù)管理器為開(kāi)源項(xiàng)目二進(jìn)制文件提供存儲(chǔ)庫(kù)托管服務(wù)。 OSSRH使用的是Maven存儲(chǔ)庫(kù)格式,我們可以部署開(kāi)發(fā)版本的二進(jìn)制文件snapshots,階段發(fā)布二進(jìn)制文件,還可以升級(jí)二進(jìn)制文件并將其同步到中央倉(cāng)庫(kù)中。
使用Sonatype創(chuàng)建ticket
Sonatype使用JIRA來(lái)管理創(chuàng)建請(qǐng)求,所以我們需要首先創(chuàng)建一個(gè)JIRA賬號(hào),創(chuàng)建賬號(hào)地址: https://issues.sonatype.org/secure/Signup!default.jspa , 然后使用該賬戶(hù)創(chuàng)建一個(gè)Project ticket,創(chuàng)建ticket地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134。
一般來(lái)說(shuō)會(huì)在2個(gè)工作日內(nèi)進(jìn)行審核。
中央倉(cāng)庫(kù)中的組件要求
不同于我們自己的私人倉(cāng)庫(kù),中央倉(cāng)庫(kù)中的組件的格式是有一定要求的。我們需要遵循它的格式規(guī)范。
提供Javadoc 和源代碼
除了pom文件之外,還需要提供javadoc文件和源代碼文件。這樣的目的是方便在IDE中直接訪問(wèn)使用。
這些文件的命名遵循Maven存儲(chǔ)庫(kù)格式的命名約定,使用artifactId加上version作為文件名稱(chēng),并根據(jù)類(lèi)型使用javadoc或者sources作為名字的區(qū)分,以jar結(jié)尾,比如:
<groupId>com.example.applications</groupId> <artifactId>example-application</artifactId> <version>1.4.7</version>
其對(duì)應(yīng)的javadoc文件和源代碼文件如下:
example-application-1.4.7-sources.jar example-application-1.4.7-javadoc.jar
如果確實(shí)沒(méi)有javadoc和源代碼文件,比如Scala項(xiàng)目,那么需要?jiǎng)?chuàng)建一個(gè)假的文件來(lái)通過(guò)驗(yàn)證。
使用GPG/PGP給文件簽名
所有的文件都需要使用GPG/PGP進(jìn)行簽名,生成一個(gè).asc后綴的文件,比如對(duì)應(yīng)下面的文件:
example-application-1.4.7.pom example-application-1.4.7.jar example-application-1.4.7-sources.jar example-application-1.4.7-javadoc.jar
需要生成:
example-application-1.4.7.pom.asc example-application-1.4.7.jar.asc example-application-1.4.7-sources.jar.asc example-application-1.4.7-javadoc.jar.asc
Metadata文件
Metadata文件也就是需要提交的pom文件。 這是Apache Maven用來(lái)定義項(xiàng)目及其構(gòu)建的Project Object Model文件。 使用其他工具進(jìn)行構(gòu)建時(shí),必須對(duì)其進(jìn)行組裝并確保其包含下面幾項(xiàng)必須的信息。
除了必需的信息外,還建議包含項(xiàng)目的正確依賴(lài)關(guān)系,以便構(gòu)建工具可以使用該信息正確地解決傳遞依賴(lài)關(guān)系,并且不需要用戶(hù)手動(dòng)管理依賴(lài)關(guān)系。
項(xiàng)目坐標(biāo)信息,也叫做GAV。包括groupId ,artifactId和version,如下所示:
<groupId>com.example.applications</groupId> <artifactId>example-application</artifactId> <version>1.4.7</version>
除此之外,如果項(xiàng)目不是jar包,還需要包含packaging信息,有效的值包括: jar
, war
,ear
, pom
, maven-plugin
, ejb
, rar
, par
, aar
和 apklib
。
項(xiàng)目名字,描述和URL信息:
<name>Example Application</name> <description>A application used as an example on how to set up pushing its components to the Central Repository.</description> <url>http://www.example.com/example-application</url>
還可以使用變量來(lái)構(gòu)建項(xiàng)目名:
<name>${project.groupId}:${project.artifactId}</name>
License信息
<licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses>
開(kāi)發(fā)者信息
<developers> <developer> <name>Manfred Moser</name> <email>manfred@sonatype.com</email> <organization>Sonatype</organization> <organizationUrl>http://www.sonatype.com</organizationUrl> </developer> </developers>
SCM信息
SCM是你項(xiàng)目的地址,如果使用的svn可以這樣寫(xiě):
<scm> <connection>scm:svn:http://subversion.example.com/svn/project/trunk/</connection> <developerConnection>scm:svn:https://subversion.example.com/svn/project/trunk/</developerConnection> <url>http://subversion.example.com/svn/project/trunk/</url> </scm>
如果使用的github可以這樣寫(xiě):
<scm> <connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection> <developerConnection>scm:git:ssh://github.com:simpligility/ossrh-demo.git</developerConnection> <url>http://github.com/simpligility/ossrh-demo/tree/master</url> </scm>
部署
部署的目的是將生成的組件部署到本地的倉(cāng)庫(kù)中,有很多工具可以使用,最常見(jiàn)的就是Apache Maven,其他的構(gòu)建工具比如Apache ant、Gradle、sbt等都可以很方便的構(gòu)建項(xiàng)目。
注意,OSSRH單個(gè)文件有上傳大小限制,最大為1024MB。如果需要上傳更大的組件,需要聯(lián)系sonatype。
上傳到中央倉(cāng)庫(kù)
本地部署好之后,就可以上傳到中央倉(cāng)庫(kù)了。
可以使用Nexus Staging Maven Plugin 或者 Ant Tasks 來(lái)通過(guò)命令行上傳。也可以直接瀏覽器訪問(wèn) https://oss.sonatype.org/ 來(lái)上傳。
一旦發(fā)布,組件會(huì)在10分鐘之內(nèi)發(fā)布到中央倉(cāng)庫(kù),并且在2個(gè)小時(shí)之內(nèi),可以從中央倉(cāng)庫(kù)搜索到。
我們以瀏覽器發(fā)布為例來(lái)看一下具體的步驟。
首先使用JIRA創(chuàng)建的用戶(hù)名和密碼登錄到 https://oss.sonatype.org/ 。
登錄之后,在左下角可以看到Build Promotion選項(xiàng),我們選擇Staging Repositories ,就會(huì)展示目前處于stage狀態(tài)的倉(cāng)庫(kù)。
在部署過(guò)程中創(chuàng)建的stage存儲(chǔ)庫(kù)會(huì)有一個(gè)名稱(chēng),該名稱(chēng)以項(xiàng)目的groupId開(kāi)頭(刪除其中的點(diǎn)),帶有破折號(hào)和4位數(shù)字。 例如。 如果您的項(xiàng)目groupId為com.example.applications,則staging配置文件名稱(chēng)將以comexampleapplications開(kāi)頭。 序列號(hào)從1000開(kāi)始,并且隨著部署的增加而增加,比如:comexampleapplication-1010。
選擇staging存儲(chǔ)庫(kù),列表下方的面板將顯示有關(guān)存儲(chǔ)庫(kù)的更多詳細(xì)信息。 另外,可以點(diǎn)擊Close和Release按鈕。
部署完成后,狀態(tài)會(huì)變成Open,點(diǎn)擊close會(huì)觸發(fā)對(duì)組件的校驗(yàn),如果校驗(yàn)成功,那么可以點(diǎn)擊release按鈕將其部署到中央倉(cāng)庫(kù)中。
如果選擇使用Nexus Staging Maven插件或Ant任務(wù)進(jìn)行部署,可以直接在命令行進(jìn)行。
到此這篇關(guān)于maven中心倉(cāng)庫(kù)OSSRH使用簡(jiǎn)介的文章就介紹到這了,更多相關(guān)maven中心倉(cāng)庫(kù)OSSRH內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談java中為什么實(shí)體類(lèi)需要實(shí)現(xiàn)序列化
下面小編就為大家?guī)?lái)一篇淺談java中為什么實(shí)體類(lèi)需要實(shí)現(xiàn)序列化。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Java基于狀態(tài)模式實(shí)現(xiàn)的文檔編輯模式切換功能實(shí)例
這篇文章主要介紹了Java基于狀態(tài)模式實(shí)現(xiàn)的文檔編輯模式切換功能,結(jié)合實(shí)例形式詳細(xì)分析了狀態(tài)模式的概念、原理及java使用狀態(tài)模式實(shí)現(xiàn)文檔編輯模式切換操作相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05Java中Integer.parseInt和Integer.valueOf區(qū)別小結(jié)
在Java中,Integer.parseInt()和Integer.valueOf()都可以將字符串轉(zhuǎn)換為整數(shù)類(lèi)型,那么他們有哪些區(qū)別呢,本文就來(lái)詳細(xì)的介紹一下2023-09-09IntelliJ IDEA 中使用jRebel進(jìn)行 Java 熱部署教程圖解
Rebel是一款JAVA虛擬機(jī)插件,它使得JAVA程序員能在不進(jìn)行重部署的情況下,即時(shí)看到代碼的改變對(duì)一個(gè)應(yīng)用程序帶來(lái)的影響。本文通過(guò)圖文并茂的形式給大家介紹了IntelliJ IDEA 中使用jRebel進(jìn)行 Java 熱部署教程圖解,需要的朋友參考下吧2018-04-04Spring?Boot?集成JWT實(shí)現(xiàn)前后端認(rèn)證的示例代碼
小程序、H5應(yīng)用的快速發(fā)展,使得前后端分離已經(jīng)成為了趨勢(shì),本文主要介紹了Spring?Boot?集成JWT實(shí)現(xiàn)前后端認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04java如何從地址串中解析提取省市區(qū)(完美匹配中國(guó)所有地址)
這篇文章主要給大家介紹了關(guān)于java如何從地址串中解析提取省市區(qū)的相關(guān)資料,通過(guò)這個(gè)方法可以完美匹配中國(guó)所有地址,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07IntelliJ IDEA報(bào)錯(cuò)Error:java: Compilation failed: internal java
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA報(bào)錯(cuò)Error:java: Compilation failed: internal java compiler error的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10解析Java的可變長(zhǎng)參數(shù)列表及其使用時(shí)的注意點(diǎn)
這篇文章主要介紹了解析Java的可變參數(shù)列表及其使用時(shí)的注意點(diǎn),注意可變參數(shù)必須位于最后一項(xiàng),需要的朋友可以參考下2016-03-03Java線程池配置的一些常見(jiàn)誤區(qū)總結(jié)
這篇文章主要給大家介紹了關(guān)于Java線程池配置的一些常見(jiàn)誤區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01