central maven

当我向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.gpgsecring.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.ascsecring.gpg.ascsettings.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 release, tag is `0.1`

您将在几秒钟内收到答复。 其余的将由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

central maven

central maven_一键发布到Maven Central的方法相关推荐

  1. 一键发布到Maven Central的方法

    当我向Maven Central发布Java开源库jcabi-aspects的新版本时,我花费了30秒钟的时间. 甚至更少. 最近,我发布了0.17.2版本. 您可以在Github第80期中看到所有情 ...

  2. gradle使用maven_使用Gradle – 2019版从Travis可靠发布到Maven Central

    gradle使用maven 得益于在2018年和2019年末实现的显式登台存储库创建功能集,使您(自动)从Travis(不仅是)发布到Maven Central更加可靠. 背景 如果您仅想获取有关如何 ...

  3. 使用Gradle – 2019版从Travis可靠发布到Maven Central

    得益于在2018年和2019年末实现的显式登台存储库创建功能集,使您(自动)从Travis(不仅是)发布到Maven Central更加可靠. 背景 如果您仅想获取信息,如何使您的工件从Travis发 ...

  4. gradle maven_将工件从Gradle自动提升到Maven Central

    gradle maven 快速教程,无需在带有Gradle Nexus Staging插件的Nexus GUI中单击即可将Gradle项目中的工件提升/释放到Maven Central. 介绍 Mav ...

  5. 从Gradle自动将工件提升到Maven Central

    快速教程,无需在带有Gradle Nexus Staging插件的Nexus GUI中单击即可将Gradle项目中的工件提升/发布到Maven Central. 介绍 Maven Central (又 ...

  6. eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central

    eap aka 如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有 ...

  7. 使用API​​密钥(aka身份验证令牌)部署到Maven Central

    如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此). 基本原理 不幸的是,Gradle(和许多其他构建工具)没有提供任何机制来本 ...

  8. Android Studio之maven Central 和 JCenter

    Android studio 是从哪里得到库的? Android Studio是从build.gradle里面定义的Maven 仓库服务器上下载library的.Apache Maven是Apache ...

  9. 怎么把自己的Android library上传到jCenter和Maven Central

    看了网上好多篇相关文章,研究许久,才终于成功,自己整理并分享给大家 如果你想在Android Studio中引入一个library到你的项目,你只需添加如下的一行代码到模块的build.gradle文 ...

最新文章

  1. python常用英语单词-python – 获取英语单词的基本形式
  2. 【组合数学】排列组合 ( 排列组合内容概要 | 选取问题 | 集合排列 | 集合组合 )
  3. OSPF协议工作原理
  4. CSS中通过import方式导入的方法
  5. SQL查询过滤Where子句用法
  6. 2020年前端如何适应大环境,发展的前途与趋势是怎么样的?
  7. Bailian2744 子串【字符串】
  8. 深度强化学习DQN(Deep Q Network)原理及例子:如何解决迷宫问题,附源码
  9. 【翻译】MongoDB指南/CRUD操作(二)
  10. ZJOI 2008 瞭望塔 三分法
  11. C语言库函数查找工具MSDN
  12. 2015年第六届C/C++ B组蓝桥杯省赛真题
  13. 聪明人喜欢挑战性,高难度excel操作技巧你会几个?
  14. TabIndex 属性:Tabindex=-1 与Tabindex=0、任意数字
  15. 微信小程序转码机器人搭建方法,可爱猫,vml机器人插件
  16. Java递归子集算法(树状结构)的逻辑和实例代码实现 @杨章隐
  17. 直播怎么录屏,妙招分享,亲测好用!
  18. css中创建主轴方向,flex-direction
  19. 跟我学 编写QQ找茬辅助1 -原创文章
  20. echo -e 命令详解

热门文章

  1. 【期望】彩色圆环(金牌导航 期望-5)
  2. 【矩阵乘法】Matrix Power Series(poj 3233)
  3. 汇编语言(三十四)之输出中文
  4. artTemplate的空白输出坑
  5. Spring 注入集合
  6. 谈谈Memcached与Redis
  7. String、StringBuilder、StringBuffer三者执行效率
  8. 算法一之简单选择排序
  9. 消费端整合SpringCloudGateway
  10. ReviewForJob——快速排序(基于插入排序)+快速选择(快速排序变体)