zoukankan      html  css  js  c++  java
  • 上传Android或Java库到Maven central repository(转载)

     

    主要介绍利用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/
    安装完成后通过在命令行模式下通过

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

    public key生成结束后用

    命令查看key内容,如下:

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

    这样便完成了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为

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

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

    5、配置Maven仓库地址

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

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

    m2 目录在linux下路径为/home/user-name/.m2,windows下路径为C:Usersyour-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时可能会出现

    的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

  • 相关阅读:
    Delphi中多标签页面的实现
    选择排序
    关于Delphi中TRttiContext.FindType失效的问题
    Delphi中拖动无边框窗口的5种方法
    集中精力做最有价值的事情,而不必把主要精力都浪费在自我包装上(例如学位,头衔,自吹自擂)——沉痛反思:我以前还真是这样
    QModelIndex有internalPointer()函数,可以存任何数据,另有QAbstractItemModel::createIndex来创造节点
    沉没成本——无法收回的成本,但不要影响下一次决策
    使用HttpURLConnection实现多线程下载
    Delphi6/7 中XML 文档的应用
    delphiXE调用Objective-c库
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/3737004.html
Copyright © 2011-2022 走看看