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插件
<parent><groupId>org.sonatype.oss</groupId><artifactId>oss-parent</artifactId><version>9</version>
</parent>

该父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 (您的本地存储库配置)中设置工件的签名。
<profiles><profile><id>sonatype-oss-release</id><properties><gpg.keyname>F21879F3</gpg.keyname><gpg.passphrase>*********</gpg.passphrase><gpg.defaultKeyring>false</gpg.defaultKeyring><gpg.useagent>true</gpg.useagent><gpg.lockMode>never</gpg.lockMode><gpg.homedir>/home/lkrnac/.gnupg</gpg.homedir><gpg.publicKeyring>/home/lkrnac/.gnupg/pubring.gpg</gpg.publicKeyring><gpg.secretKeyring>/home/lkrnac/.gnupg/secring.gpg</gpg.secretKeyring></properties></profile>
</profiles>

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.sh

8.按下“部署到Maven Central”按钮

赶紧跑

./maven-central-deploy.sh

确认并根据需要输入SSH私钥通行证。

9.通过SonaType Nexus存储库发布工件

将工件推送到SonaType Nexus存储库时。 您需要释放它 。 最后,您需要在开始创建的SonaType JIRA问题中添加评论,然后等到有人检查您的工件并设置与Maven Central的同步。 当然,JIRA的一部分只需要做一次。

链接

  • 以这种方式配置的示例项目托管在GitHub上 。 (这是很小的测试库)。
参考:在Lubos Krnac Java博客博客上,从我们的JCG合作伙伴 Lubos Krnac 部署到Maven Central Repository 。

翻译自: https://www.javacodegeeks.com/2014/03/deploy-to-maven-central-repository.html

maven的中央存储库

maven的中央存储库_部署到Maven中央存储库相关推荐

  1. maven 程序包不存在_有人说 Maven 很简单,我却被“伤害”过

    在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那么一个 ...

  2. maven 常量字符串过长_从基于Maven的Web应用程序获取版本字符串

    maven 常量字符串过长 打包maven项目时,它将自动在其中生成pom.properties文件,其中将包含版本,artifactId和groupId信息. 这些在运行时很方便拥有并显示给您的We ...

  3. maven 对于java的要求_如何在Maven中表达对Java EE功能的依赖以过渡到Java 9?

    该模块系统讲的无名模块作为在从类路径加载应用的情况下构建模块图的方式.此外,从文档本身来看: 当编译器在未命名模块中编译代码,或者调用Java启动程序并将应用程序的主类从类路径加载到应用程序类加载器的 ...

  4. 部署到Maven中央存储库

    您需要使您的Java库公开访问吗? 您的项目托管在GitHub上吗? 您是否喜欢"将所有功能都部署到Maven Central Repository"按钮的想法? 我将展示如何使用 ...

  5. maven设置从本地读_如何在Eclipse中更改Maven本地存储库

    通常,这些回答了以下问题:如何更改用户设置文件? 但是我想回答的问题是如何更改本地Maven存储库位置. 答案是您必须编辑settings.xml. 如果文件不存在,则必须创建它. 您可以在窗口> ...

  6. git 创建本地存储库_创建您的第一个Git存储库

    git 创建本地存储库 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分:如 ...

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

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

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

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

  9. maven添加子工程_重量级!Maven史上最全教程,看了必懂

    作者 | 小明菜市场来源 | 小明菜市场(ID:fileGeek)头图 |  CSDN 下载自东方IC 前言 为了持续集成和持续部署,需要把项目改造为,或者使用maven创建项目,下面介绍maven ...

最新文章

  1. docker logstash log docker logs to elasticsearch
  2. c语言教程常用32,几个常用运算符
  3. 寻找mysql的data文件夹得方式
  4. wdatepicker设置时间范围_Parker590+在直流电机控制系统中的应用、设置及常见故障排除(中)...
  5. 更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
  6. php面向对象项目,PHP的面向对象编程:开发大型PHP项目的方法(一)
  7. 带宽测量:pathload编译及运行
  8. (第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...
  9. Angstrom移植操作
  10. 利用JMeter进行Web测试(简介适合初学者)
  11. 使用Hutool来实现深拷贝
  12. 推荐系统组队学习——矩阵分解和FM
  13. 关于如何查看 EntityValidationErrors 详细信息的解决方法
  14. 服务器响应401,如果服务器返回401响应,则重定向到登录页面(Redirect to login page if server returns 401 response)...
  15. hibernate 中的一级缓存 二级缓存
  16. Redis 入门指南
  17. 使用C#存储数据时excel有Microsoft切换到了wps时的引用
  18. 打开浏览器默认是360导航解决办法
  19. 计量经济学计算机第1章习题,计量经济学第1章习题.pdf
  20. Unreal4+Qt+Plugins(unrealcv)安装教程

热门文章

  1. P6240 好吃的题目(分治+背包)
  2. 【LCT】旅游(P1505)
  3. 【期望】乘坐电梯(金牌导航 期望-2)
  4. 1、play编程基础
  5. 博客文章列表(一)——JAVA
  6. Nacos(四)之安装
  7. JS获取自定义属性data-*值与dataset
  8. LocalDateTime与LocalDate之间的相互转换
  9. MySQL多对多创建表语句(防忘记)
  10. oxyen eclipse 启动 报错 se启动提示javaw.exe in your current PATH、No java virtual machine