[Publish AAR To Maven] 使用 Gradle 发布 AAR 到 Maven 仓库

========================================================

作者:qiujuer

博客:blog.csdn.net/qiujuer

网站:www.qiujuer.net

开源库:github.com/qiujuer/Genius-Android

转载请注明出处:http://blog.csdn.net/qiujuer/article/details/44195131

——学之开源,用于开源;初学者的心态,与君共勉!

========================================================

有一个好的库想与世界的伙伴分享,于是共享到GitHub上,于是有人看到了,但是要使用却发现配置非常难。但是发现别人的库只需要一行代码却能使用;于是我想知道为什么能这么简单。

在这篇文章中将带你了解如何发布你的库到远程仓库Maven中,又如何使用。

准备

开始之前我们有一定的准备工作,如果准备好了那么后面将会非常顺畅。

开始

前面的两项工作由于篇幅较大,单独开篇了,欢迎大家去看~~,我们从第三的地方开始。

编写Lib

编写库,这里我采用的是Android-Studio;至于其使用建立过程以及简单使用大家可见:环境配置之正式版Android Studio 1.0

在这里我使用 Genius-Android 开源库进行演示。

在本次项目中我们尝试发布 UI 部分,图中圈起来部分为我们需要的文件。

编写发布文件

发布文件就是其中的 maven_push.gradle 。由于代码较长就不贴代码了,大家可以去GitHub上查看。

代码已经发布到 BeFoot 开源项目中.

该代码运行在 Gradle 中,作用是按照配置进行打包代码文件,然后签名文件,最后发布你的文件到仓库。

在该代码中可以看见许多的方法与参数,如:

def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}

这个方法的作用是判断版本名称是否含有 “SNAPSHOT”字段,也就是判断当前是否发布的是快照版本,以便传输到不同的服务器地址。

但是其中的 “VERSION_NAME” 哪里来的呢?往下看~~

gradle.properties

“maven_push” 文件中所有的字段都是访问的你的 “gradle.properties” 文件。

可以看见我们的项目中有两个这样的文件,两个文件中的内容都可以全部写到一个文件中。之所以写出两个,下面那个代表的是本项目中的全局变量,至于 UILib 中的那个则只局限于 UILib 中使用。

现在我们分别打开看看,首先打开下面那个全局的文件。

在这里我们需要更改的地方有如下几个地方:

再来看看库中的文件:

这里相对简单的多了,无非就是名称,ID,类型,版本等信息。

有必要说明的是,上面的POM_GROUP_ID+POM_ARTIFACT_ID+VERSION_NAME 将会得到如下的使用方式:

dependencies {
    compile ‘com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT‘
}

完了?没~还有一个至关重要的地方,在”Maven_Push”的代码中我们会找到:

以及其中的 signing 部分,但是你会发现你找遍了上面的所有的文件都没有发现这些字段,那么这些字段在哪里呢?

很简单,在Android-Studio 缓存文件夹配置 中有讲解“.gradle”目录对吧?那么现在我们去看看 这个目录中有什么。

可以看见其中也有一个 “gradle.properties”文件,这个文件不在项目中,但是在项目中却可以访问,这是一个全局的文件,任何项目都可以访问该文件,如果你没有,那么可以自己创建一个就OK。

为什么要存储到这里?我们都知道项目中的 “gradle.properties” 文件一般来说都是会提交到 Git 上面去的,所以项目中的文件不应该包含私密的东西,比如密钥对,密钥密码,以及你的 Maven 的账户信息。

打开该文件我们能看见:

build.gradle

现在还需要修改你的项目中的 build 文件,需要更改的地方如下:

android {
    sourceSets {
        main {
            manifest.srcFile ‘src/main/AndroidManifest.xml‘
            java.srcDirs = [‘src/main/java‘]
            res.srcDirs = [‘src/main/res‘]
        }
    }
    lintOptions {
        abortOnError false
    }
}
apply from: ‘https://raw.github.com/qiujuer/BeFoot/master/blog/gradle-mvn-push/gradle-mvn-push.gradle‘

发布

如果你上面的都做到了,那么现在进入发布的地段了~~

执行发布命令

Android-Studio进入项目中,打开“Terminal”窗口,进入你的项目中,执行命令:

$ gradle clean build uploadArchives

第一次操作的时候将会下载一大堆的依赖。

最后出现成功提示则OK。

检查快照版本

在这里我们进入:https://oss.sonatype.org/content/groups/public/

找到你的项目地址,我本次的是:

https://oss.sonatype.org/content/groups/public/com/github/qiujuer/genius-ui/3.0.0-SNAPSHOT/

可以看出其中有着原始文件以及签名等验证文件。

如果你的没有“asc”文件,那么发布“Release”版本时将无法通过审核。

也不是说快照版本就无法使用,同样可以,其使用方式为:

dependencies {
    repositories {
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    compile ‘com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT‘
}

如果发布了过个快照版本,那么就为:

compile ‘com.github.qiujuer:genius-ui:3.0.0-SNAPSHOT-2‘ 

发布“Release”

该发布方法操作命令行的方式与快照版本一样,完全一样;只需要更改你的库中的:gradle.properties 文件中的 VERSION_NAME ,删除掉后面的 “”-SNAPSHOT”“ 就OK。

之后执行命令行命令;然后你会发现你在:

https://oss.sonatype.org/content/groups/public/

中无法找到你发布的 “Release”版本;这是正常的;如果现在找到了反而不正常。

操作仓库发布

要完成“Release”版本的发布还需要登陆到后台中进行一些简单的操作。

网站:https://oss.sonatype.org/

登陆:用户名与密码与https://issues.sonatype.org/中的完全一样。

登陆成功后点击左边导航中的:“Staging Repositories”

在其中根据你的GroupId去找你对应的一行。比如我的Id:“com.github.qiujuer”那么就是:

找到后点击他,如果不是你的或者你没有找到那么看看是不是你上面根本就没有上传成功。

选中后点击上面的“Close”按钮,填写描述信息;然后等待一段时间;在这个过程中你可以点击刷新按钮。

在下面可以看见发送了邮件提醒,然后上面的 “Release” 按钮可以点击了,此时点击该按钮,填写描述信息,不必太多。然后等待;当下面同样出现发送了邮件提醒的时候那么恭喜你发布成功了。

如果在上面你上传的文件中没有签名文件那么将无法操作成功;此时你应该重新上传有签名的版本。

发布成功后你的使用方式为(你并不能立即就能使用,一般需要10分钟及其以上的时间):

dependencies {
    compile ‘com.github.qiujuer:genius-ui:3.0.0‘
}

附件

本次操作中需要的文件我都上传到 GitHub 上了。

地址:https://github.com/qiujuer/BeFoot/tree/master/blog/gradle-mvn-push

一些问题

该地方,暂时就不写了,太长了~~

说一个简单的吧:如果执行发布命令时出现:401 错误,代表你的账户登录失败,也就是你的账户名或者密码错误。

其他问题,大家如果遇到了可以提出来我会一一回答的。

一些题外话

说实话这篇文章,很早以前就想写了;但是大概想了一下感觉篇幅会比较大,所以一直没有写。

这次也是有朋友在问这方面的情况,所以就花了几天时间写了,真的是花了几天时间,不是空闲时间。也许你们看只需要10分钟,或许10分钟都要不到,可我却花了你的100倍甚至更多的时候来写的。

由于是使用的 MarkDown 编辑器(出现BUG意外死掉的情况少)写的,所以没有像以前一样加上高亮等操作,不是不加,而是编辑器还不支持。

========================================================

作者:qiujuer

博客:blog.csdn.net/qiujuer

网站:www.qiujuer.net

开源库:github.com/qiujuer/Genius-Android

转载请注明出处:http://blog.csdn.net/qiujuer/article/details/44195131

——学之开源,用于开源;初学者的心态,与君共勉!

========================================================

时间: 2024-11-03 21:59:22

[Publish AAR To Maven] 使用 Gradle 发布 AAR 到 Maven 仓库的相关文章

使用Gradle发布项目到JCenter仓库 (转载)

原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒的嘛.JCenter现在是Android Studio中repositories的默认节点了,之前是Maven的,不过JCenter是兼容Maven的,所以放心使用.步骤基本是按Publishing Gradle Android Library to jCenter Repository这里来的,英文能看的直接看这篇也行.下面我的步骤正式开始,发

使用Gradle发布项目到JCenter仓库

转:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒

Zxing 的集成 ---- Maven 对应 Gradle 的写法

刚刚想耍耍二维码,想到了zxing和zbar,又想到zxing是Google老爹的,想想就算了吧,虽然zbar快但是识别错误率也高不少.随手Google了下*zxing 集成*好像都是说什么拷贝项目到自己的工程中,我不信Gradle集成这么方便了为何不用.于是我来到zxing的 Github 主页 ,在README的引导下来到Get Start页面,里面有如下说明: Maven core/, javase/, android-integration and zxingorg can be use

【Eclipse】 Maven和Gradle区别及使用Eclipse中使用Gradle下载Jar包

一.简介 代码三大构建工具,Ant.Maven和Gradle.现在的状况是Maven和Gradle并存,Gradle使用的越来越广泛. 二.Maven和Gradle区别 Maven的主要功能是多模块构建.依赖管理系统.一致的项目结构.一致的项目构建模型和插件机制.主要体现以下5点 多模块构建 现在的项目中,一般我们会将一个项目分解是多个模块.在Maven中需要定义一个parent POM作为一组module的通用配置,我们可以用<modules>标签来定义一组子模块 在Gradle也支持多模块

Gradle实战:发布aar包到maven仓库

查看原文:http://blog.csdn.net/u010818425/article/details/52441711 Gradle实战系列文章: <Gradle基本知识点与常用配置> <Gradle实战:Android多渠道打包方案汇总> <Gradle实战:不同编译类型的包同设备共存> <Gradle实战:执行sql操作hive数据库> aar简介 aar文件是Google为Android开发所设计的一种library格式,全名为Android Ar

As发布aar到maven私有库

As发布aar到maven私有库,按照网上的例子我试了几次,可以发布成功,但是死活,implementation下载到本地,不能自动import,通过查看external libraries发现同步过来的classes.jar下面没有内容.当时没放在心上,有其他事要做,还加班到深夜. 接下来两天,心里始终有个疙瘩.因为我们要做的东西直接as生成的aar是可以本地使用的,公司也有自己的maven私有库,供外网访问,如果不能用as直接发布到上面好使毕竟不好.也试过手动把aar上传到Maven私服Ne

[Gradle系列]Gradle发布module库到jcenter, 并构建自己的企业Maven私服

Tamic 作者: http://blog.csdn.net/sk719887916 前言 andorid开发者经常会看到xx公司发布了xx项目,xx公司只提供了gradle配置路径我们就能轻松的使用它们的项目到自己的工程中: 譬如: 谷歌自身的库 compile 'com.android.support:appcompat-v7:22.2.0' 第三方库 compile 'com.squareup.okhttp:okhttp:2.7.2' 很多开发者看过之后羡慕不已, 想自己能不能也写一个自己

android使用bintray发布aar到jcenter

前言 这两天心血来潮突然想把自己的android library的aar放到jcenter里面,这样一来自己便可以在任何时间任何地点通过internet得到自己的library的引用了,况且现在android studio已经默认使用jcenter的repositories作为依赖来源,以前的mavencenter已经开始慢慢废弃. 经过半天的努力打工告成,但也遇到不少坑  在这里记下来分享给各位有同样想法的盆友们 (声明,本文讲得东西都是亲身经历,并且本文并不会事无巨细得将所有步骤细节讲得很细

发布library到Maven仓库

发布library到Maven仓库 在Android Studio中想要使用一些第三方类库的时候非常方便,只需要在build.gradle中加入一行代码就可以了: dependencies { compile 'com.google.code.gson:gson:2.3.1' } 刚从Eclipse转过来的时候感觉太方便了,也不用下jar包然后拷贝到libs目录了,重要的是以后升级起来灰常方便,改个数字就好了. 那究竟它里面是怎么运转的呢?其实Android Studio是从Maven仓库中下载