主要介绍利用Sonatype将jar或aar提交到Maven的中央仓库

是不是希望将自己的jar或是aar传到maven官方库中,在The Central Repository中可以被其他人搜索使用呢,是的话,往下看吧。

1、Sonatype简介
Sonatype使用Nexus为开源项目提供托管服务。你可以通过它发布快照(snapshot)或是稳定版(release)到Maven中央仓库。我们只要注册一个Sonatype的JIRA账号、创建一个JIRA ticket,然后对POM文件稍作配置即可。

2、注册账号
打开https://issues.sonatype.org/ 注册Sonatype的JIRA账号,这个账号在后面配置maven server时需要使用。
打开Create a OSSRH ticke 创建一个JIRA ticket,你的一个项目对应着这里的一个JIRA ticket,
其中Summary可以填写项目名,Description填写项目介绍。
Group Id非常重要,必须是你项目pom.xml中的group id的父级,做为你账号和该项目关联的标记。如我项目pom.xml中group id为cn.trinea.android.common,为了我所有项目都可以发布,申请填写的Group Id为cn.trinea
其他按照提示填写即可。完成后大概2个工作日左右,该Issue会变为 _resolved_ 状态表示可用,在可用前下面的过程除了第7步 正式发布外,其他的都没有问题

3、软件环境
(1) JDK5以上
(2) Subversion 或是 Git
这是根据你项目需要的,你项目用什么版本控制管理工具
(3) Maven 2.2.1+
(4) GPG,用于对需要上传的文件加密和签名
下载地址:https://www.gnupg.org/download/index.html,windows版下载地址:http://gpg4win.org/
安装完成后通过在命令行模式下通过

1
gpg--gen-key

命令生成自己的public key,除了姓名、邮箱、备注外其他都可以使用默认配置,最后需要填写一个passphase,注意它在后面mvn release签名时需要。

public key生成结束后用

1
gpg--list-keys

命令查看key内容,如下:

XHTML
1
2
3
4
5

C:/Users/Trinea/AppData/Roaming/gnupg/pubring.gpg
--------------------------------------------------------
pub2048R/C6EED57A2014-05-11
uidTrinea(www.trinea.cn)<trinea.cn@gmail.com>
sub2048R/932D6F332014-05-11

其中C6EED57A为key id,需要将他上报给服务器,命令如下:

1
gpg--keyserverhkp://pool.sks-keyservers.net--send-keysC6EED57A

这样便完成了gpg public key的创建和上报操作。

如果有兴趣深入了解可见:How To Generate PGP Signatures With Maven

4、标准的Pom文件格式

(1) POM文件必须含有以下元素
<modelVersion>
<groupId>
<artifactId>
<version>
<packaging>
<name>
<description>
<url>
<licenses>
<scm><url>
<scm><connection>
<developers>

(2) 如果是jar文件,必须包含-javadoc.jar及-sources.jar,即需要在POM中配置build的相应plugin

关于pom.xml内容可参考:https://github.com/Trinea/android-common/blob/master/pom.xml

其中需要修改以下地方
(1) 相关元素信息改为你自己项目信息。
(2) 必须保证parent或parent的parent为

Java
1
2
3
4
5

<parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
</parent>

(3) 如果你版本控制使用的不是git,而是其他工具,配置见POM and settings config

(4) 纯Java(非Android)工程需要将<packaging>aar</packaging>改为<packaging>jar</packaging>,并且去掉

Java
1
2
3
4
5
6
7

<!--Android deps-->
<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>android</artifactId>
    <version>4.0.1.2</version>
    <scope>provided</scope>
</dependency>

Java
1
2
3
4
5
6
7
8
9
10
11
12

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <sdk>
            <platform>14</platform>
        </sdk>
        <undeployBeforeDeploy>true</undeployBeforeDeploy>
    </configuration>
    <extensions>true</extensions>
</plugin>

5、配置Maven仓库地址

在.m2目录下的settings.xml文件中添加

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<settings>
  ...
  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
  </servers>
  ...
</settings>

将其中的your-jira-id和your-jira-pwd替换为你在https://issues.sonatype.org/上的用户名和密码。

m2 目录在linux下路径为/home/user-name/.m2,windows下路径为C:\Users\your-user-name\.m2

如果后面步骤中发现settings修改不生效可参考:Maven Sonatype Nexus return 401

6、编译上传

(1) 发布一个snapshot版本
mvn clean deploy
发布完成后登陆https://oss.sonatype.org (https://issues.sonatype.org/ 上的用户名和密码),通过下图步骤找到自己的Artifact(上传的jar或aar或pom等)

(2) 发布一个release版本
mvn release:clean release:prepare release:perform
过程中需要通过GPG签名,需要输入上面的passphase。发布完成后我们依然可以通过类似上图步骤找到我们的Artifact

其他上传方式见Stage a Release

7、正式发布

这里的正式发布是指同步到Maven主仓库使得其他人可以使用。主要包括Close和Release两步,先Close后Release,分别如下图


其他不明白可以查看:Release

需要注意

(1) 在release时可能会出现

XHTML
1
2

Releasefailed
Nexusreturnedanerror:ERROR403:Forbidden

的403弹窗,这可能是因为在2中创建的JIRA ticket,状态还没有变为 _resolved_,等待可用即可。如果上面截图中你的Repository列表中Profile列的值不是你在创建JIRA ticket时的Group Id需要重新提交。

(2) 如果是第一次release,需要到之前你的JIRA ticket下,评论下告诉他们,你已经release了,需要同步下,我的JIRA ticket: OSSRH-9800.  如下图:

官方指南:Sonatype OSS Maven Repository Usage Guide

上传Android或Java库到Maven central repository(转载)相关推荐

  1. maven安装 maven上传jar包到库里面

    maven的安装与配置:http://pansanday.blog.163.com/blog/static/381662802012727103454743/ maven上传jar包到库里面: 将私有 ...

  2. SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明

    看在前面:前端页面通过input控件实现文件上传,后台Java使用SpringMVC框架的实现网上有较多教程,但是真正配置一遍下来不报错的较少,所以本博客前面先介绍一遍完整的设置步骤,然后介绍遇到的一 ...

  3. git命令下载项目,上传android项目到github步骤,以及取消项目关联Git,设置git忽略文件

    设置忽略文件 1.工程下创建文件夹gitignore.push即可 *.iml .gradle /local.properties /.idea/caches /.idea/libraries /.i ...

  4. android自定义头像上传,android裁切图片之用于头像上传

    嘛话都不说,直接贴代码,也是在网上找的代码copy出来的! 页面代码 encoding="utf-8"?> android:orientation="vertica ...

  5. android导入github项目,上传Android项目至github的解析

    这是一个新的系列的文章,github项目,主要讲解了自己的github项目开源实践,github项目解析等. 本文主要讲解了如何将自己的android项目上传至github,相信大家平时在开发过程中为 ...

  6. IOS上传文件给java服务器,返回报错unacceptable context-type:text/plain

    IOS上传文件给java服务器,返回报错unacceptable context-type:text/plain response返回类型不对 @RequestMapping(value = &quo ...

  7. Java毕设项目线上教学平台(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目线上教学平台(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webst ...

  8. ps图片导svg,并上传到阿里图标库

    设计画的图标,之前一直用的Inksacpe转的svg,并上传到阿里图标库,但是在删除背景时,图片极其容易虚化变形. 最近发现ps导出的svg,也可以上传到阿里,最关键的一步是先把图片"形状化 ...

  9. plupload android,plupload 上传 android功能没有任何问题, ios 按钮却点不动

    plupload 上传 android功能没有任何问题, ios 按钮却点不动,这是一个页面多个上传按钮,页面效果如下: 图一可以上传成功 图二 上传按钮点击却没有反应 图二按钮代码如下 //图片上传 ...

最新文章

  1. js 添加内容实现列表功能
  2. 关于Javascript的内存泄漏问题的整理稿
  3. AjaxPro组件的应用(实现Ajax)
  4. 河北师范大学计算机科学与技术研究生好考吗,河北师范大学计算机科学与技术怎么样...
  5. 【数字信号处理】线性常系数差分方程 ( “ 线性常系数差分方程 “ 与 “ 线性时不变系统 “ 关联 | 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 线性时不变系统方法 )
  6. ·XP注册表修改大全
  7. 【HDU - 1757】A Simple Math Problem (矩阵快速幂)
  8. ECCV 2020 论文大盘点-自动驾驶篇
  9. 武汉锅检所检测机器人_宿迁水上行走管道检测机器人CCTV-武汉天仪仪器
  10. Learning to Segment Object Candidates
  11. SpringBootTest测试类报错:Suppressed: java.lang.IllegalStateException: Unable to find a @SpringBootCon
  12. Invalidate() UpdateData() OnPaint()与OnDraw
  13. git常用命令--tag
  14. php inputcsv,php实现CSV文件导入和导出
  15. 精美高清壁纸:2014年1月桌面日历壁纸免费下载
  16. iphone pop服务器没有响应,iPhone 6 Plus跳屏或者触摸失灵的解决办法
  17. 图书馆管理系统(详细)(C语言版本)
  18. 微信小程序canvas绘制圆形头像
  19. 897-了解微服务网关
  20. 汽车变速箱的科学保养方法

热门文章

  1. TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)
  2. Linux文件查找find和locate
  3. 关于Mybatis的SQL映射文件中in关键字的用法
  4. 实验四:汇编代码调用系统调用的工作过程
  5. Javascript实现边框闪动
  6. 40多个漂亮的网页表单设计实例
  7. 支付宝支付 第九集:产品数据和支付二维码对接
  8. python视频口碑佳_从万众期待到口碑扑街!用Python来分析一下大家对唐探3的评论...
  9. 实时获取ccd图像_薄膜瑕疵在线检测系统0.1mm检测精度_实时在线检测
  10. 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法