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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

部署到Maven中央存储库

發(fā)布時間:2023/12/3 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 部署到Maven中央存储库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

您需要使您的Java庫公開訪問嗎? 您的項目托管在GitHub上嗎? 您是否喜歡“將所有功能都部署到Maven Central Repository”按鈕的想法? 我將展示如何使用maven-release-plugin進(jìn)行設(shè)置 。 源代碼托管在GitHub上,因此還將描述對源代碼控制的SSH訪問。

為項目設(shè)置環(huán)境需要采取各種步驟。 我遵循了SonaType官方指南中的許多步驟,因此在需要時會參考它。 但是,本指南還介紹了配置“部署到Maven Central存儲庫”按鈕不需要的許多技術(shù)。

考慮

我的第一種方法是創(chuàng)建代表“部署到Maven Central”按鈕的Jenkins作業(yè)。 對于我來說,這個想法比從我的開發(fā)機(jī)器推動來的要干凈得多。 我?guī)缀鯖]有嘗試過,但是當(dāng)maven-release-plugin將版本更新推送到GitHub時,無法使Jenkins SSH Agent插件注冊我的SSH身份。 因此,非常簡單的Linux Bash腳本涉及兩個步驟。

1.創(chuàng)建SonaType JIRA票證以注冊您的groupId

SonaType驅(qū)動最大的Nexus存儲庫之一。 需要先在其中部署Java工件,然后才能將其同步到Maven Central存儲庫。 為了將Java庫發(fā)布到SonaType Nexus存儲庫中,需要JIRA票證。 SonaType指南包含有關(guān)如何創(chuàng)建它的詳細(xì)說明。

選擇反映您的頂級域的Maven groupId。 它通常與Java主程序包相同(例如com.google ,而不是com.google.guava )。 這是因為您不想為您的域/主包/ groupId下的每個項目/庫創(chuàng)建JIRA票證。 這里是有關(guān)Java包命名約定的更多信息。

2.從SonaType OSS pom.xml繼承您的Maven工件

SonaType父POM包含

  • SonaType Nexus存儲庫的URL
  • Maven插件的配置
    • Enforcer插件
<parent><groupId>org.sonatype.oss</groupId><artifactId>oss-parent</artifactId><version>9</version> </parent>

此父POM的存在很方便,因為否則您將需要在POM中指定所有插件。 唯一的問題是插件版本已過時,因此我決定以這種方式覆蓋POM中的某些版本:

<pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.5</version></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.4.2</version></plugin></plugins> </pluginManagement>

重要版本更新是GPG插件之一,因為更新版本具有有關(guān)GPG簽名一節(jié)所述的便捷功能。

3.配置Maven工件的GPG簽名

由于Maven Central存儲庫的安全策略,因此需要這樣做。 包括各個子步驟:

  • 安裝GnuPG工具
  • 生成密鑰對
  • 分配您的公鑰
  • settings.xml (您的本地存儲庫配置)中設(shè)置工件的簽名。
<profiles><profile><id>sonatype-oss-release</id><properties><gpg.keyname>F21879F3</gpg.keyname><gpg.passphrase>*********</gpg.passphrase><gpg.defaultKeyring>false</gpg.defaultKeyring><gpg.useagent>true</gpg.useagent><gpg.lockMode>never</gpg.lockMode><gpg.homedir>/home/lkrnac/.gnupg</gpg.homedir><gpg.publicKeyring>/home/lkrnac/.gnupg/pubring.gpg</gpg.publicKeyring><gpg.secretKeyring>/home/lkrnac/.gnupg/secring.gpg</gpg.secretKeyring></properties></profile> </profiles>

F21879F3是我的公共GPG密鑰ID。 gpg –list-keys命令將為您列出它。 Passphase是您的GPG專用密鑰的密碼。 .gnupg文件夾通常在您的主目錄中生成。

4.設(shè)置SonaType Nexus存儲庫的憑據(jù)

需要推送到SonaType Nexus存儲庫。 與SonaType JIRA憑據(jù)相同。 再次在settings.xml中

<servers><server><id>sonatype-nexus-snapshots</id><username>lkrnac</username><password>*************</password></server><server><id>sonatype-nexus-staging</id><username>lkrnac</username><password>*************</password></server> </servers>

6.設(shè)置對GitHub的SSH訪問

請遵循以下子步驟:

  • 生成新的SSH密鑰
  • 將公共SSH密鑰添加到GitHub

7.創(chuàng)建“部署到Maven Central”按鈕

Maven-release-plugin需要推送/簽入版本更新到源代碼控制系統(tǒng)并標(biāo)記修訂。 就我而言,代碼托管在GitHub上。 因此,在調(diào)用maven-release-plugin的目標(biāo)之前,我需要注冊我的SSH身份(在上一步中生成)。 這是通過位于pom.xml旁邊的bash腳本maven-central-deploy.sh完成的:

!/bin/bash # Deploy maven artefact in current directory into Maven central repository # using maven-release-plugin goalsread -p "Really deploy to maven cetral repository (yes/no)? "if ( [ "$REPLY" == "yes" ] ) thenssh-add ~/.ssh/lubos.krnacssh-add -lmvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.logssh-add -D elseecho 'Exit without deploy' fi

使腳本可執(zhí)行

chmod +x maven-central-deploy.sh

8.按下“部署到Maven Central”按鈕

趕緊跑

./maven-central-deploy.sh

確認(rèn)并根據(jù)需要輸入SSH私鑰通行證。

9.通過SonaType Nexus存儲庫發(fā)布工件

將工件推送到SonaType Nexus存儲庫時。 您需要釋放它 。 最后,您需要在開始創(chuàng)建的SonaType JIRA問題中添加評論,然后等到有人檢查您的工件并設(shè)置與Maven Central的同步。 當(dāng)然,JIRA部分僅需要完成一次。

鏈接

  • 以這種方式配置的示例項目托管在GitHub上 。 (這是很小的測試庫)。

參考:在Lubos Krnac Java博客博客上,從我們的JCG合作伙伴 Lubos Krnac 部署到Maven Central Repository 。

翻譯自: https://www.javacodegeeks.com/2014/03/deploy-to-maven-central-repository.html

總結(jié)

以上是生活随笔為你收集整理的部署到Maven中央存储库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。