一键发布到Maven Central的方法
當我向Maven Central發布Java開源庫jcabi-aspects的新版本時,我花費了30秒鐘的時間。 甚至更少。 最近,我發布了0.17.2版本。 您可以在Github第80期中看到所有情況:
如您所見,我向Rultor發出了命令,它向Maven Central發布了一個新版本。 我什么也沒做
現在,讓我們看看如何做到這一點。 如何配置項目,以便將新版本發布到Maven Central只需花費幾秒鐘的時間。
順便說一句,我假設您正在Github中托管項目。 如果沒有,整個教程將無法正常工作。 如果您仍然不在Github中,我強烈建議您搬到那里。
準備您的POM
確保pom.xml包含Sonatype所需的所有元素,如Central Sync Requirements中所述 。 我們將部署到Sonatype,他們會將所有JAR(不僅是)工件同步到Maven Central。
使用Sonatype注冊項目
在Sonatype JIRA中創建一個帳戶并提出票證,要求批準您的groupId。 《 OSSRH指南》更詳細地說明了此步驟。
創建和分發GPG密鑰
創建GPG密鑰并分發它,如本使用PGP簽名文章中所述。
完成此步驟后,您應該有兩個文件: pubring.gpg和secring.gpg 。
創建settings.xml
在上一步中創建的兩個.gpg文件旁邊創建settings.xml :
<settings><profiles><profile><id>foo</id> <!-- give it the name of your project --><properties><gpg.homedir>/home/r</gpg.homedir><gpg.keyname>9A105525</gpg.keyname><gpg.passphrase>my-secret</gpg.passphrase></properties></profile></profiles><servers><server><id>sonatype</id><username><!-- Sonatype JIRA user name --></username><password><!-- Sonatype JIRA pwd --></password></server></servers> </settings>在此示例中, 9A105525是您的公共密鑰的ID,而my-secret是您在生成密鑰時使用的密碼。
加密安全資產
現在,使用Rultor公鑰( 9AF0FA4C )對這三個文件進行加密:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 9AF0FA4C gpg --trust-model always -a -e -r 9AF0FA4C pubring.gpg gpg --trust-model always -a -e -r 9AF0FA4C secring.gpg gpg --trust-model always -a -e -r 9AF0FA4C settings.xml您將獲得三個新文件: pubring.gpg.asc , secring.gpg.asc和settings.xml.asc 。 將它們添加到項目的根目錄,然后提交并推送。 這些文件包含您的機密信息,但是只有Rultor服務器可以解密它們。
添加Sonatype存儲庫
我建議使用jcabi-parent作為您項目的父pom。 這將使許多其他步驟變得不必要。 如果您使用的是jcabi-parent,請跳過此步驟。
但是,如果您不使用jcabi-parent,則應將這兩個存儲庫添加到pom.xml :
<project>[...]<distributionManagement><repository><id>oss.sonatype.org</id><url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository><snapshotRepository><id>oss.sonatype.org</id><url>https://oss.sonatype.org/content/repositories/snapshots</url></snapshotRepository></distributionManagement> </project>配置GPG插件
同樣,我建議使用http://parent.jcabi.com,它會自動配置此插件。 如果您正在使用它,請跳過此步驟。
否則,將此插件添加到您的pom.xml :
<project>[..]<build>[..]<plugins>[..]<plugin><artifactId>maven-gpg-plugin</artifactId><version>1.5</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins></build> </project>配置版本插件
再一次,我建議使用http://parent.jcabi.com。 它可立即配置所有必需的插件。 如果您正在使用它,請跳過此步驟。
否則,將此插件添加到您的pom.xml :
<project>[..]<build>[..]<plugins>[..]<plugin><groupId>org.codehaus.mojo</groupId><artifactId>versions-maven-plugin</artifactId><version>2.1</version><configuration><generateBackupPoms>false</generateBackupPoms></configuration></plugin></plugins></build> </project>配置Sonatype插件
是的,您是對的,http://parent.jcabi.com也會在這里為您提供幫助。 如果您正在使用它,也請跳過此步驟。
否則,將這四個插件添加到您的pom.xml :
<project>[..]<build>[..]<plugins>[..]<plugin><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</skip></configuration></plugin><plugin><artifactId>maven-source-plugin</artifactId><executions><execution><id>package-sources</id><goals><goal>jar</goal></goals></execution></executions></plugin><plugin><artifactId>maven-javadoc-plugin</artifactId><executions><execution><id>package-javadoc</id><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6</version><extensions>true</extensions><configuration><serverId>oss.sonatype.org</serverId><nexusUrl>https://oss.sonatype.org/</nexusUrl><description>${project.version}</description></configuration><executions><execution><id>deploy-to-sonatype</id><phase>deploy</phase><goals><goal>deploy</goal><goal>release</goal></goals></execution></executions></plugin></plugins></build> </project>創建Rultor配置
在項目的根目錄中創建一個.rultor.yml文件( 參考頁詳細介紹了此格式):
decrypt:settings.xml: "repo/settings.xml.asc"pubring.gpg: "repo/pubring.gpg.asc"secring.gpg: "repo/secring.gpg.asc" release:script: |mvn versions:set "-DnewVersion=${tag}"git commit -am "${tag}"mvn clean deploy --settings /home/r/settings.xml您可以將文件與jcabi-aspects的實時Rultor 配置進行比較 。
運行!
現在是時候看看它們如何工作了。 在Github問題跟蹤器中創建一個新票證,并將類似的內容發布到其中(閱讀有關Rultor命令的更多信息):
您將在幾秒鐘內收到答復。 其余的將由Rultor完成。
請享用!
順便說一句,如果我無法解釋某些問題 ,請毫不猶豫地向Rultor問題跟蹤器提交票證。 我會盡力幫助您。
是的,忘記了,Rultor還在做兩項重要的事情。 首先,它會創建一個帶有適當描述的Github版本。 其次,它發布有關該版本的推文,您可以轉發該推文,以向關注者發布公告。 這兩個功能對我來說都很方便。 例如:
DynamoDB Local Maven插件,0.7.1已發布https://t.co/C3KULouuKS
— rultor.com(@rultors) 2014年8月19日
相關文章
您可能還會發現以下有趣的帖子:
- 一鍵式部署到CloudBees
- 部署腳本與Rultor
- 一鍵式發布到Rubygems的方法
- 魯托爾+特拉維斯
- 每個構建都在自己的Docker容器中
翻譯自: https://www.javacodegeeks.com/2014/09/how-to-release-to-maven-central-in-one-click.html
總結
以上是生活随笔為你收集整理的一键发布到Maven Central的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带有AOP和注释的Java方法记录
- 下一篇: 六大银行是哪六大行?