日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven中心仓库OSSRH使用简介

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven中心仓库OSSRH使用简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • 為什么使用中心倉庫
  • 發布到中心倉庫前的準備工作
  • 使用OSSRH
    • 使用Sonatype創建ticket
    • 中央倉庫中的組件要求
      • 提供Javadoc 和源代碼
      • 使用GPG/PGP給文件簽名
      • Metadata文件
    • 部署
    • 上傳到中央倉庫

簡介

使用java做項目的朋友肯定對maven不陌生,maven為我們提供了一個中心倉庫,我們在構建java項目時,直接從maven中心倉庫中下載依賴的jar包到本地,然后打包進行構建。

所有人都知道有這樣一個maven倉庫,但是很少有人去探尋這個maven倉庫到底在什么地方,能不能發布自己的jar包到中心倉庫呢?今天給大家介紹一下maven中心倉庫和OSSRH的使用。

為什么使用中心倉庫

maven中心倉庫的地址是 https://search.maven.org/#browse , 我們可以通過該鏈接去查找需要的jar包,而這些jar包都是各個開源組織發布上去的。

這個中心倉庫是Apache Maven, SBT 默認的repository。同時還可以支持 Apache Ant/Ivy, Gradle 等構建工具的使用。

現在的軟件界是開源的軟件界,越來越多的人和企業愿意在網絡上貢獻自己的代碼,于是有了maven社區的中心倉庫,可以方便任何人共享和使用jar包。

發布到中心倉庫前的準備工作

發布到中心倉庫是需要權限的,我們需要注冊我們的項目也就是artifacts id,并且指定需要將項目發布到哪里。

Sonatype 提供了一個叫做開源軟件資源庫托管Open Source Software Repository Hosting (OSSRH) 的工具,幫助我們來方便的將項目發布到中心倉庫中。它是項目所有者和貢獻者將其組件發布到中央資源庫的主要途徑。

我們需要選擇一個你所擁有的domain作為groupId,對于GitHub groupId(io.github.username),只要您的項目URL與所請求的groupId匹配,就會立即進行驗證。

對于其他的域名,可以通過下面兩種方式之一來進行域名的驗證:

  • 使用TXT文件驗證:在域名下創建一個代表OSSRH ticket number的TXT文件來進行驗證。
  • GitHub重定向:設置你的域名到托管項目的GitHub URL的重定向。
  • 使用OSSRH

    Sonatype OSSRH(OSS存儲庫托管)使用Sonatype Nexus存儲庫管理器為開源項目二進制文件提供存儲庫托管服務。 OSSRH使用的是Maven存儲庫格式,我們可以部署開發版本的二進制文件snapshots,階段發布二進制文件,還可以升級二進制文件并將其同步到中央倉庫中。

    使用Sonatype創建ticket

    Sonatype使用JIRA來管理創建請求,所以我們需要首先創建一個JIRA賬號,創建賬號地址: https://issues.sonatype.org/secure/Signup!default.jspa , 然后使用該賬戶創建一個Project ticket,創建ticket地址:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134。

    一般來說會在2個工作日內進行審核。

    中央倉庫中的組件要求

    不同于我們自己的私人倉庫,中央倉庫中的組件的格式是有一定要求的。我們需要遵循它的格式規范。

    提供Javadoc 和源代碼

    除了pom文件之外,還需要提供javadoc文件和源代碼文件。這樣的目的是方便在IDE中直接訪問使用。

    這些文件的命名遵循Maven存儲庫格式的命名約定,使用artifactId加上version作為文件名稱,并根據類型使用javadoc或者sources作為名字的區分,以jar結尾,比如:

    <groupId>com.example.applications</groupId> <artifactId>example-application</artifactId> <version>1.4.7</version>

    其對應的javadoc文件和源代碼文件如下:

    example-application-1.4.7-sources.jar example-application-1.4.7-javadoc.jar

    如果確實沒有javadoc和源代碼文件,比如Scala項目,那么需要創建一個假的文件來通過驗證。

    使用GPG/PGP給文件簽名

    所有的文件都需要使用GPG/PGP進行簽名,生成一個.asc后綴的文件,比如對應下面的文件:

    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用來定義項目及其構建的Project Object Model文件。 使用其他工具進行構建時,必須對其進行組裝并確保其包含下面幾項必須的信息。

    除了必需的信息外,還建議包含項目的正確依賴關系,以便構建工具可以使用該信息正確地解決傳遞依賴關系,并且不需要用戶手動管理依賴關系。

  • 項目坐標信息,也叫做GAV。包括groupId ,artifactId和version,如下所示:
  • <groupId>com.example.applications</groupId> <artifactId>example-application</artifactId> <version>1.4.7</version>

    除此之外,如果項目不是jar包,還需要包含packaging信息,有效的值包括: jar , war ,ear , pom , maven-plugin , ejb , rar , par , aar 和 apklib 。

  • 項目名字,描述和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>

    還可以使用變量來構建項目名:

    <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>
  • 開發者信息
  • <developers><developer><name>Manfred Moser</name><email>manfred@sonatype.com</email><organization>Sonatype</organization><organizationUrl>http://www.sonatype.com</organizationUrl></developer></developers>
  • SCM信息
  • SCM是你項目的地址,如果使用的svn可以這樣寫:

    <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可以這樣寫:

    <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>

    部署

    部署的目的是將生成的組件部署到本地的倉庫中,有很多工具可以使用,最常見的就是Apache Maven,其他的構建工具比如Apache ant、Gradle、sbt等都可以很方便的構建項目。

    注意,OSSRH單個文件有上傳大小限制,最大為1024MB。如果需要上傳更大的組件,需要聯系sonatype。

    上傳到中央倉庫

    本地部署好之后,就可以上傳到中央倉庫了。

    可以使用Nexus Staging Maven Plugin 或者 Ant Tasks 來通過命令行上傳。也可以直接瀏覽器訪問 https://oss.sonatype.org/ 來上傳。

    一旦發布,組件會在10分鐘之內發布到中央倉庫,并且在2個小時之內,可以從中央倉庫搜索到。

    我們以瀏覽器發布為例來看一下具體的步驟。

    首先使用JIRA創建的用戶名和密碼登錄到 https://oss.sonatype.org/ 。

    登錄之后,在左下角可以看到Build Promotion選項,我們選擇Staging Repositories ,就會展示目前處于stage狀態的倉庫。

    在部署過程中創建的stage存儲庫會有一個名稱,該名稱以項目的groupId開頭(刪除其中的點),帶有破折號和4位數字。 例如。 如果您的項目groupId為com.example.applications,則staging配置文件名稱將以comexampleapplications開頭。 序列號從1000開始,并且隨著部署的增加而增加,比如:comexampleapplication-1010。

    選擇staging存儲庫,列表下方的面板將顯示有關存儲庫的更多詳細信息。 另外,可以點擊Close和Release按鈕。

    部署完成后,狀態會變成Open,點擊close會觸發對組件的校驗,如果校驗成功,那么可以點擊release按鈕將其部署到中央倉庫中。

    如果選擇使用Nexus Staging Maven插件或Ant任務進行部署,可以直接在命令行進行。

    本文已收錄于 http://www.flydean.com/04-maven-ossrh/

    最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

    歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!

    總結

    以上是生活随笔為你收集整理的maven中心仓库OSSRH使用简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。