central maven_一键发布到Maven Central的方法

central maven

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



github-ticket-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版本。 其次,它发布有关发布的推文,您可以转发,以向关注者发布公告。 这两个功能对我来说都很方便。 例如:

相关文章

您可能还会发现以下有趣的帖子:

  • 一键式部署到CloudBees
  • 部署脚本与Rultor
  • 一键式发布到Rubygems的方法
  • 鲁托尔+特拉维斯
  • 每个构建都在自己的Docker容器中

翻译自: https://www.javacodegeeks.com/2014/09/how-to-release-to-maven-central-in-one-click.html

central maven

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

销毁AWS资源:Cloud-Nuke还是AWS-Nuke?

因此&#xff0c;您在开发帐户上工作&#xff0c;并且Terraform陷入了一个循环&#xff0c;难道不让您轻易销毁剩余资源吗&#xff1f; 进入nuke CLI的世界&#xff01; 在撰写本文时&#xff0c;我使用的是v0.1.16版 用Go语言编写的《 Gruntwork》不会破坏掉aws-nuke那样多的…

防热服的设计数学建模_全国大学生数学建模和电子设计赛,这所驻青高校获奖山东最多...

全省百余高校参加全国数学建模竞赛&#xff0c;本科组32队获一等奖、78队获二等奖&#xff1b;青岛理工大学获本科组国家一等奖5项、二等奖7项&#xff0c;获山东赛区一等奖28项、二等奖17项&#xff0c;获奖数量山东第一、全国第二。1月4日&#xff0c;2019年全国大学生数学建…

每台计算机需要配置网关吗,每台计算机的IP地址和网关以及子网掩码的设置有哪些规律或者规则吗?...

满意答案hryy4082013.04.14采纳率&#xff1a;47% 等级&#xff1a;9已帮助&#xff1a;714人电脑之间要实现网络通信&#xff0c;就必须要有一个合法的ip地址。IP地址网络地址主机地址&#xff0c;(又称&#xff1a;主机号和网络号组成)ip地址的结构使我们可以在Internet上…

mysql提高吞吐量_垃圾收集:提高吞吐量

mysql提高吞吐量这篇文章的灵感来自于在内存管理术语表中碰到“ Pig in the Python ”的定义之后。 显然&#xff0c;该术语用于解释GC反复促进大对象世代相传的情况。 据推测&#xff0c;这样做的效果类似于Python吞下整个猎物&#xff0c;只是在消化过程中被固定住了。 在接…

honeyselect捏脸教程_动漫女生的脸怎么画?卡通漫画少女教学

动漫女生的脸怎么画&#xff1f;卡通漫画少女教学&#xff01;我们知道&#xff0c;人类的审美是具有时代特征的。在不同的历史时期&#xff0c;人们的审美会发生变化。举个栗子&#xff1a;“楚王好细腰&#xff0c;宫中多饿死”“燕瘦环肥”、魏晋时期的男风盛行、初唐的“肤…

html编辑器不支持自定义样式,百度编辑器自定义按钮样式问题(写在cssRules不起做用)?...

UE.registerUI(dialog,function(editor,uiName){//创建dialogvar dialog new UE.ui.Dialog({//指定弹出层中页面的路径&#xff0c;这里只能支持页面,因为跟addCustomizeDialog.js相同目录&#xff0c;所以无需加路径iframeUrl:/地址,//需要指定当前的编辑器实例editor:UEdito…

如何在Java JVM中处理图像和视频

在Java JVM中处理图像&#xff08;更不用说视频&#xff09;一直是一项艰巨的任务。 自JDK7以来&#xff0c; ImageIO类已经走了很长一段路&#xff0c;再加上常见的SDK错误&#xff0c;并不总是能给您您所期望的&#xff08;图像质量差&#xff0c;不总是支持所有类型的JPEG标…

手机怎么进ph_明日发布,华为鸿蒙OS2.0手机版特色功能曝光

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导

南师大张老师信息编程师资团队小学信息学的教学如今小学生对计算机的兴趣越来越强&#xff0c;使用计算机的时间也越来越多。许多聪慧的孩子无意之间&#xff0c;为追求控制感、成功感&#xff0c;沉溺进了电脑游戏&#xff0c;令家长、教师扼腕叹息。信息学培训&#xff0c;引…

json 在后天怎么接_长相显老怎么办?以同岁的马伊琍和刘敏涛为例,解析显年轻的技巧...

短发女王马伊琍和最近上热搜的刘敏涛都是1976年出生&#xff0c;今年44岁&#xff0c;但是当两人同框时&#xff0c;即使相同的脸型和服饰&#xff0c;马伊琍显得很年轻&#xff0c;而刘敏涛却像是隔代人&#xff0c;真的好尴尬。这是什么原因呢&#xff1f;其实她们的尴尬&…

java8 streams_当Java 8 Streams API不够用时

java8 streamsJava 8与往常一样是妥协和向后兼容的版本。 JSR-335专家组可能尚未与某些读者就某些功能的范围或可行性达成一致的版本 。 请参阅Brian Goetz关于为什么…的一些具体解释。 …Java 8默认方法中不允许“最终” …Java 8默认方法中不允许“同步” 但是今天&#…

计算机软考初级工程资料,计算机软考网络工程师复习资料及习题(一)

1、 若是serial0 is up, line protocol is up表示该端口工作正常。2、若是serial 0 is down, line protocol is down表示路由器到本地的modem之间无载波信号cd。连接串口和 modem,开启modem.看modem的发送灯td是否亮&#xff0c;td灯亮表示路由器有信号发送给modem.td灯若不亮,…

计算机硬盘瓶颈,为何你的电脑卡的飞起,看看是不是遇到存储瓶颈

原标题&#xff1a;为何你的电脑卡的飞起&#xff0c;看看是不是遇到存储瓶颈存储一直是笔记本电脑的性能瓶颈之一&#xff0c;同时还关系到电池续航时间。除了一颗性能澎湃的处理器之外&#xff0c;更多人困惑的是硬盘存储配置的选择。硬盘不仅有容量属性&#xff0c;更是影响…

JMetro版本8.6.11和11.6.11已发布

你好 JMetro的另一个版本。 这次已重新设置了2个新控件的样式&#xff0c;错误修复和其他一些小的调整。 我希望你们在这个陌生的时代都能安然无well。 继续阅读以获取详细信息。 新的ColorPicker样式 以下是新的ColorPicker样式LIGHT和DARK的动画&#xff1a; ColorPicker…

c#中overlord实例_具有Overlord的WildFly 8.1中的API管理

c#中overlord实例昨天&#xff0c;我简要介绍了霸王项目家族。 今天是时候进行试驾了。 API管理子项目两天前发布了1.0.0.Alpha1&#xff0c;并根据18个月的路线图介绍了第一组功能。 APIMan到底是什么&#xff1f; 它是一个API管理系统&#xff0c;可以嵌入到现有框架或应用程…

计算机病毒需要附着在,计算机病毒是如何传播的?

满意答案Fixedburn2019.10.24采纳率&#xff1a;53% 等级&#xff1a;8已帮助&#xff1a;7262人1、各种网络传播(1)电子邮件电子邮件是病毒通过互联网进行传播的主要媒介。病毒主要依附在邮件的附件中&#xff0c;而电子邮件本身并不产生病毒。当用户下载附件时&#xff0c…

使用适用于Java 2的AWS开发工具包的AWS DynamoDB版本字段

将任何实体上的版本属性保存到 AWS DynamoDB数据库&#xff0c;它仅是表示实体已修改次数的数字表示。 首次创建实体时&#xff0c;可以将其设置为1&#xff0c;然后在每次更新时递增。 好处是立竿见影的-指示实体已被修改的次数&#xff0c;可用于审核实体。 此外&#xff0…

51单片机有几个通用io口_51单片机IO口的四种使用方法

原标题:51单片机IO口的四种使用方法 传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路。 灌电流方式 LED正极接VCC,负极接IO口。IO为高电平是LED两极电平相同,没有电流,LED熄灭;IO为低电平时,电流从VCC流入IO,…

win7计算机个性化设置,笔记本电脑windows7系统如何用好电脑个性化设置

笔记本电脑windows7系统想要用好电脑个性化设置&#xff0c;该怎么办呢&#xff0c;下面是学习啦小编收集整理的笔记本电脑windows7系统如何用好电脑个性化设置&#xff0c;希望对大家有帮助~~笔记本电脑windows7系统用好电脑个性化设置的方法右击桌面空白区域&#xff0c;在弹…

ARM AArch64的TrustZone架构详解(上)

目录 一、概述 1.1 在开始之前 二、什么是TrustZone? 2.1 Armv8-M的TrustZone 2.2 Armv9-A Realm Management Extension(RME)