central maven_一键发布到Maven Central的方法
central maven
當(dāng)我向Maven Central發(fā)布Java開源庫jcabi-aspects的新版本時,我花了30秒鐘的時間。 甚至更少。 最近,我發(fā)布了版本0.17.2。 您可以在Github第80期中看到所有情況:
如您所見,我向Rultor發(fā)出了命令,它向Maven Central發(fā)布了一個新版本。 我什么也沒做
現(xiàn)在,讓我們看看如何做到這一點。 如何配置項目,以便將新版本發(fā)布到Maven Central只需花費幾秒鐘的時間。
順便說一句,我假設(shè)您正在Github中托管項目。 如果沒有,整個教程將無法正常工作。 如果您仍不在Github中,我強烈建議您搬到那里。
準備您的POM
確保pom.xml包含Sonatype所需的所有元素,如Central Sync Requirements中所述 。 我們將部署到Sonatype,他們會將所有JAR(不僅是)工件同步到Maven Central。
使用Sonatype注冊項目
在Sonatype JIRA中創(chuàng)建一個帳戶并提出票證,要求批準您的groupId。 《 OSSRH指南》更詳細地說明了此步驟。
創(chuàng)建和分發(fā)GPG密鑰
創(chuàng)建GPG密鑰并分發(fā)它,如本使用PGP簽名文章中所述。
完成此步驟后,您應(yīng)該有兩個文件: pubring.gpg和secring.gpg 。
創(chuàng)建settings.xml
在上一步中創(chuàng)建的兩個.gpg文件旁邊,創(chuàng)建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是您在生成密鑰時使用的密碼。
加密安全資產(chǎn)
現(xiàn)在,使用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服務(wù)器可以解密它們。
添加Sonatype存儲庫
我建議將jcabi-parent用作您項目的父pom。 這將使許多其他步驟變得不必要。 如果您使用的是jcabi-parent,請?zhí)^此步驟。
但是,如果您不使用jcabi-parent,則應(yīng)將這兩個存儲庫添加到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,它會自動配置此插件。 如果您正在使用它,請?zhí)^此步驟。
否則,將此插件添加到您的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。 它可立即配置所有必需的插件。 如果您正在使用它,請?zhí)^此步驟。
否則,將此插件添加到您的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也會在這里為您提供幫助。 如果您正在使用它,也請?zhí)^此步驟。
否則,將這四個插件添加到您的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>創(chuàng)建Rultor配置
在項目的根目錄中創(chuàng)建一個.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 配置進行比較 。
運行!
現(xiàn)在是時候看看它們?nèi)绾喂ぷ髁恕?在Github問題跟蹤器中創(chuàng)建一個新票證,并將類似的內(nèi)容發(fā)布到其中(閱讀有關(guān)Rultor命令的更多信息):
您將在幾秒鐘內(nèi)收到答復(fù)。 其余的將由Rultor完成。
請享用!
順便說一句,如果我無法解釋某些問題 ,請毫不猶豫地向Rultor問題跟蹤器提交票證。 我會盡力幫助您。
是的,忘記了,Rultor還在做兩件重要的事情。 首先,它會創(chuàng)建一個帶有適當(dāng)描述的Github版本。 其次,它發(fā)布有關(guān)發(fā)布的推文,您可以轉(zhuǎn)發(fā),以向關(guān)注者發(fā)布公告。 這兩個功能對我來說都很方便。 例如:
DynamoDB Local Maven插件,0.7.1已發(fā)布https://t.co/C3KULouuKS
— rultor.com(@rultors) 2014年8月19日
相關(guān)文章
您可能還會發(fā)現(xiàn)以下有趣的帖子:
- 一鍵式部署到CloudBees
- 部署腳本與Rultor
- 一鍵式發(fā)布到Rubygems的方法
- 魯托爾+特拉維斯
- 每個構(gòu)建都在自己的Docker容器中
翻譯自: https://www.javacodegeeks.com/2014/09/how-to-release-to-maven-central-in-one-click.html
central maven
總結(jié)
以上是生活随笔為你收集整理的central maven_一键发布到Maven Central的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新员工入职备案(新职工备案)
- 下一篇: (藏璟备案价)