maven的中央存储库_部署到Maven中央存储库
maven的中央存儲庫
您需要使您的Java庫可公開訪問嗎? 您的項目托管在GitHub上嗎? 您是否喜歡“將所有功能都部署到Maven Central Repository”按鈕的想法? 我將展示如何使用maven-release-plugin進行設置 。 源代碼托管在GitHub上,因此還將描述對源代碼控制的SSH訪問。
為項目設置環境需要采取各種步驟。 我遵循了SonaType官方指南中的許多步驟,因此在需要時會參考它。 但是,本指南還介紹了配置“部署到Maven Central存儲庫”按鈕不需要的許多技術。
考慮
我的第一種方法是創建代表“部署到Maven Central”按鈕的Jenkins作業。 對于我來說,這個想法比從我的開發機器推動來的要干凈得多。 我幾乎沒有嘗試過,但是當maven-release-plugin將版本更新推送到GitHub時,無法使Jenkins SSH Agent插件注冊我的SSH身份。 因此,非常簡單的Linux Bash腳本涉及兩個步驟。
1.創建SonaType JIRA票證以注冊您的groupId
SonaType驅動最大的Nexus存儲庫之一。 必須先在此處部署Java工件,然后才能將其同步到Maven Central存儲庫。 為了將Java庫發布到SonaType Nexus存儲庫中,需要JIRA票證。 SonaType指南包含有關如何創建它的詳細說明。
選擇反映您的頂級域的Maven groupId。 它通常與Java主程序包相同(例如com.google ,而不是com.google.guava )。 這是因為您不想為您的域/主包/ groupId下的每個項目/庫創建JIRA票證。 這里是有關Java包命名約定的更多信息。
2.從SonaType OSS pom.xml繼承您的Maven工件
SonaType父POM包含
- SonaType Nexus存儲庫的URL
- Maven插件的配置
- Enforcer插件
該父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插件之一,因為更新版本具有有關GPG簽名一節所述的便捷功能。
3.配置Maven工件的GPG簽名
由于Maven Central存儲庫的安全策略,因此需要這樣做。 包括各個子步驟:
- 安裝GnuPG工具
- 生成密鑰對
- 分配您的公鑰
- 在settings.xml (您的本地存儲庫配置)中設置工件的簽名。
F21879F3是我的公共GPG密鑰ID。 gpg –list-keys命令將為您列出它。 Passphase是您的GPG專用密鑰的密碼。 .gnupg文件夾通常在您的主目錄中生成。
4.設置SonaType Nexus存儲庫的憑據
需要推送到SonaType Nexus存儲庫。 與SonaType JIRA憑據相同。 再次在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.設置對GitHub的SSH訪問
請遵循以下子步驟:
- 生成新的SSH密鑰
- 將公共SSH密鑰添加到GitHub
7.創建“部署到Maven Central”按鈕
Maven-release-plugin需要將版本更新推送/簽到源控制系統并標記修訂。 就我而言,代碼托管在GitHub上。 因此,在調用maven-release-plugin的目標之前,我需要注冊我的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使腳本可執行
chmod +x maven-central-deploy.sh8.按下“部署到Maven Central”按鈕
趕緊跑
./maven-central-deploy.sh確認并根據需要輸入SSH私鑰通行證。
9.通過SonaType Nexus存儲庫發布工件
將工件推送到SonaType Nexus存儲庫時。 您需要釋放它 。 最后,您需要在開始創建的SonaType JIRA問題中添加評論,然后等到有人檢查您的工件并設置與Maven Central的同步。 當然,JIRA的一部分只需要做一次。
鏈接
- 以這種方式配置的示例項目托管在GitHub上 。 (這是很小的測試庫)。
翻譯自: https://www.javacodegeeks.com/2014/03/deploy-to-maven-central-repository.html
maven的中央存儲庫
總結
以上是生活随笔為你收集整理的maven的中央存储库_部署到Maven中央存储库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程本地分配缓冲区
- 下一篇: 使用JDK 13查看TLS配置