maven的中央存储库_部署到Maven中央存储库
maven的中央存儲庫
您需要使您的Java庫可公開訪問嗎? 您的項目托管在GitHub上嗎? 您是否喜歡“將所有功能都部署到Maven Central Repository”按鈕的想法? 我將展示如何使用maven-release-plugin進行設(shè)置 。 源代碼托管在GitHub上,因此還將描述對源代碼控制的SSH訪問。
為項目設(shè)置環(huán)境需要采取各種步驟。 我遵循了SonaType官方指南中的許多步驟,因此在需要時會參考它。 但是,本指南還介紹了配置“部署到Maven Central存儲庫”按鈕不需要的許多技術(shù)。
考慮
我的第一種方法是創(chuàng)建代表“部署到Maven Central”按鈕的Jenkins作業(yè)。 對于我來說,這個想法比從我的開發(fā)機器推動來的要干凈得多。 我?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)建它的詳細說明。
選擇反映您的頂級域的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插件
該父POM的存在很方便,因為否則您將需要在POM中指定所有插件。 唯一的問題是插件版本已經(jīng)過時,因此我決定以這種方式覆蓋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>關(guān)鍵版本更新是GPG插件之一,因為更新版本具有有關(guān)GPG簽名一節(jié)所述的便捷功能。
3.配置Maven工件的GPG簽名
由于Maven Central存儲庫的安全策略,因此需要這樣做。 包括各個子步驟:
- 安裝GnuPG工具
- 生成密鑰對
- 分配您的公鑰
- 在settings.xml (您的本地存儲庫配置)中設(shè)置工件的簽名。
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.sh8.按下“部署到Maven Central”按鈕
趕緊跑
./maven-central-deploy.sh確認并根據(jù)需要輸入SSH私鑰通行證。
9.通過SonaType Nexus存儲庫發(fā)布工件
將工件推送到SonaType Nexus存儲庫時。 您需要釋放它 。 最后,您需要在開始創(chuàng)建的SonaType JIRA問題中添加評論,然后等到有人檢查您的工件并設(shè)置與Maven Central的同步。 當(dāng)然,JIRA的一部分只需要做一次。
鏈接
- 以這種方式配置的示例項目托管在GitHub上 。 (這是很小的測試庫)。
翻譯自: https://www.javacodegeeks.com/2014/03/deploy-to-maven-central-repository.html
maven的中央存儲庫
總結(jié)
以上是生活随笔為你收集整理的maven的中央存储库_部署到Maven中央存储库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程本地分配缓冲区
- 下一篇: 空气炸锅炸年糕 空气炸锅炸年糕的做法