Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >android本地lib通过gradle上传到本地nexus上

android本地lib通过gradle上传到本地nexus上

作者头像
隔壁老李头
发布于 2018-08-30 03:40:20
发布于 2018-08-30 03:40:20
2.8K00
代码可运行
举报
文章被收录于专栏:Android 研究Android 研究
运行总次数:0
代码可运行

今天临时开会讨论要把不经常用的,独立的第三方库上传到本地nexus上。

首先说明下搭建本地maven库的优势:

  • 1 第三方库代码不是任何人都可以进行编辑的
  • 2 很多库在服务器的maven上会让本地的project结构更简单

经过一上午的努力 通过gradle达成目标,这里做一下分享:

第一步在本地gradle.properites设置公共字段:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SNAPSHOT_REPOSITORY_URL=http://xxx.xxx.xxxx.xxx:8080/nexus/..../repositories/snapshots/
#前面配置的releases仓库地址
RELEASE_REPOSITORY_URL=http://xxx.xxx.xxxx.xxx:8080/nexus/c...../repositories/releases/

其中xxx代表你本地的服务器url
nexus要有两种地址一个是 snapshots一个是releases

NEXUS_USERNAME=admin
NEXUS_PASSWORD=pwd

其中 admin和pwd代表你nexus服务器的账号和密码

第二步 找到在本地需要上传到nexus的lib库内部的* build.gradle *文件。

在apply plugin: 'com.android.library'下添加如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply plugin: 'maven'


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

def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}


afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = "你的lib库的包名"
                pom.artifactId = "你lib库的项目名"
                pom.version = "版本号"
                repository(url: RELEASE_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
                snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
            }
        }
    }

    task androidJavadocs(type: Javadoc) {
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }

    artifacts {
        archives androidSourcesJar
//        archives androidJavadocsJar
    }
}

由于你在gradle.properites设置过RELEASE_REPOSITORY_URL、SNAPSHOT_REPOSITORY_URL、NEXUS_USERNAME和NEXUS_PASSWORD的值,所以这里可以直接引用。

第三步 选择gradle你的项目,你可以在选在Build-->Make Project或者直接点击Android Studio上面AVDManager右侧的圆形按钮。均可以gradle你的项目。
第四步 gradle你的项目后会在gradle窗口下多出一个upload方法如图

Paste_Image.png

第五步 双击这个uploadArchives,如果输出successfull,就表示成功,就会上传到你nexus服务器。
我这里遇到的坑,在这里说下:

1 url一定要对,我之前url出了一些问题。会报如下错误: Failed to transfer file http:///xxxx. Return code is: 400" 出现上面的问题一般是如下问题导致的 1 url不对 2 证书不对 3 没有权限去上传到nexus库 4 该用户上传这个库是没有权限的 5 这个release版本号已经上传过了 在 stackoverflow有相关答案

至此 你的库已经上传到nexus上了 那么如果进行依赖那? 首先在你的整体项目的build.gradle的里面添加如下代码即可:

是你的整体项目的build.gradle里面不是你的具体项目里面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        flatDir {
            dirs 'libs'
        }

        maven{
            url 'http://xxx.xxx.xxx.xx:8080/nexus/....public/'
        }
    }

}

task clean(type: Delete) {
    delete rootProject.buildDir
}

http://xxx.xxx.xxx.xx:8080/nexus/....public/ 表示你本地nexus的服务器地址 然后在你具体项目里面去依赖就可以了 然后gradle一下就好了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.05.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android模块化开发
随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?
android技术分享
2023/03/14
2.2K0
maven/gradle 打包后自动上传到nexus仓库
前提: nexus的相关repository必须设置允许redeploy,参考下图: maven项目: pom.xml中增加以下节点: <distributionManagement>
菩提树下的杨过
2018/01/18
1.7K0
maven/gradle 打包后自动上传到nexus仓库
如何发布Android Library到maven私有仓库
在我们的项目架构中,一定存在一些基础的模块,这些模块可以在多个app上通用,这种情况我们一般会将这些模块封装成Android Library统一维护,并上传到仓库方便其他小组使用。仓库可以选择如mavenCentral这类公开的仓库,但是我们一般选择搭建自己的maven私有仓库,比如:Sonatype Nexus。本文就一步步的教大家如何将Android Library发布到maven私有仓库。
BennuCTech
2021/12/10
1.7K0
如何发布Android Library到maven私有仓库
Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别
在日常开发中,不可避免的需要把自己的 library 发布到 maven 仓库中,这样使用起来也更加方便。
分你一些日落
2021/12/06
4.6K0
Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别
给工程打jar包时如何把libs中的jar包一并打入
如果工程在本地引用了第三方jar包, 那么直接使用uploadArchives指令是无法将第三方jar包打进去的
乱码三千
2021/07/29
2.9K0
给工程打jar包时如何把libs中的jar包一并打入
自定义 Gradle Plugin
com.tencent.demo.PluginDemo 是实现类Plugin接口的具体类
艳龙
2021/12/16
3850
自定义 Gradle Plugin
gradle构建android项目详解
1、用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了。 根目录下面的settings.gradle当中主要是用来include子模块的,比如我
xiangzhihong
2018/02/01
2.3K0
gradle构建android项目详解
Android 开发必备知识:我和 Gradle 有个约会
0、讲个故事 0.1 Ant,我还真以为你是只蚂蚁 真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究一下 ant 脚本吧。 那个时候连 HashMap 都不知道是啥,可想开发经验几乎为零,一个小小的 ant 脚本看得我真是深深地感受到了这个世界充满的恶意。好在后来硬着头皮搞明白了什么 target 之类的鬼东西,不然就没有然后了。 0.2 Maven,你们真的会读这个单词么 Maven /`meivn/ 接触 Maven,完全是因为读陈雄华
腾讯Bugly
2018/03/22
9250
Android 开发必备知识:我和 Gradle 有个约会
【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 )
在 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑤ ( 使用 Sonatype Nexus 搭建 Maven 仓库 ) 博客中搭建的 Maven 私服基础上 , 登录 http://localhost:8081/ Web 页面 ;
韩曙亮
2023/03/30
6550
【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 )
Android Library上传到JCenter仓库实践
前言 这段时间研究了下以前做app开发的时候并没有太过关注的JCenter仓库,在实际开发当中通常都是使用第三方开发者上传到jcenter的library,而我们使用的这些library或者plugin是怎么发布到JCenter并让我使用的? 如果我们想开发一个Library或者plugin,我们该怎么做?带着这些问题,我围绕它做了以下实践: Android Library上传到JCenter仓库实践 Gradle插件开发实践-上传apk文件到Bugly 我会分别以两篇博客来分享一下我的实践过程,本篇是入门
巫山老妖
2018/07/20
4650
使用Gradle部署jar包到Maven中央库
Maven作为目前Java界最好的Dependency管理系统,把jar包托管到Maven中央库,然后通过Maven Dependency使用是目前业界各种第三方库的普遍做法,如果,你想把自己开发的一些库分享给别人使用,也可以遵循这样的套路。Gradle可以看做是升级版的Maven,其使用了Maven最优秀的Dependency管理系统,但是,又规避了Maven的build pipeline的刻板和xml格式配置文件等缺点,可以说是目前Java界最好的构建工具。下面就来说说,如何使用Gradle把自己开发的jar包部署到Maven中央库中。
星哥玩云
2022/07/04
1K0
使用Gradle部署jar包到Maven中央库
教你轻松将Android library 发布到JCenter
JCenter是全世界最大的Java仓库,也是Android Studio中repositories的默认节点。JCenter支持Maven, Gradle, Ivy, SBT 等大部分构建工具。将项
CrazyCodeBoy
2018/05/07
1.1K0
教你轻松将Android library 发布到JCenter
来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略
小彭今天和群友讨论了一下学习方法的问题,觉得还挺感同身受的。有时候我们遇到不懂的地方,潜意识会产生厌恶和恐惧,大脑会驱使我们去学习和查看这个不懂的地方,结果有可能是陷入到另一个不懂的循环里,忘记了最初的目的。关于系统化学习和碎片化学习,你的想法是怎样的呢?评论区里告诉我吧。
用户9995743
2022/09/26
2.1K0
来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略
一步步搭建采用Gradle来运行Spring Boot应用的生产环境
Gradle Wrapper 免去了用户在使用 Gradle 进行项目构建时需要安装 Gradle 的繁琐步骤. 每个 Gradle Wrapper 都绑定到一个特定版本的 Gradle,所以当你第一次在给定 Gradle 版本下运行上面的命令之一时,它将下载相应的 Gradle 发布包,并使用它来执行构建.默认,Gradle Wrapper 的发布包是指向的官网的 Web 服务地址,有时候,下载这个发布包比较慢甚至不成功,本文演示了加速下载发布包的方式.
白石
2019/08/23
1.8K0
Android的Nexus搭建Maven私有仓库
最近一直喜欢听的一首歌,故事背景是歌手母亲经历了一次失败的婚姻,独自带着孩子遇到了和她同样在爱情里受过伤的男人,或许是同样的经历,让他们对现在的这份感情惺惺相惜,后来,这个男的成为了歌手的继父,没过多久继父就去世了,看到母亲日夜伤心难过的模样,歌手创作了这首可乐,替逝去的父亲写给母亲。 前言 我们平时在开发的时候总会compile一些远程仓库的框架来使用,但不可避免的是有些公司是内网,或是断网了,这就造成了依赖失败,亦或是自己开发了一个很牛的组件,希望同步给小伙伴一块耍耍,但是网络环境不允许,总不能拿个U盘
codelang
2018/06/26
1.1K0
gradle打包发布到maven的nexus仓库
公司要封装一个工具类,把常用的mybatis,apollo,redis,初始化运行检查等等都封装在一起,项目建好了,但是打包发布nexus之后,别的项目死活拉不到依赖包,经查,是gradle打包时生成的pom文件中没有加入模块依赖.
微笑的小小刀
2019/07/30
1.9K0
Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
开始在使用Maven时,总是会听到nexus这个词,一会儿maven,一会儿nexus,为什么它总是和maven一起被提到呢?
全栈程序员站长
2022/07/02
4.9K0
Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
利用 Gitlab搭建 maven仓库
后期--现在,打算利用公司已有的Gitlab代码管理库。实现maven仓库的搭建。
zinyan.com
2023/07/13
9040
利用 Gitlab搭建 maven仓库
Gradle打jar包如何上传到maven本地库
前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于Gradle以及Maven不在此进行展开介绍,如有读者希望了解可以给我留言,并持续关注,我后续会慢慢更新。(黑色区域代码部分,安卓手机可手动向左滑动,来查看全部代码) 定义 Maven是一个项目管理和自动构建工具。 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。 需求 在实际开发过
互扯程序
2018/01/31
6.1K0
Gradle打jar包如何上传到maven本地库
Gradle项目的jar发布到私有仓库
使用仓库的方法很简单,首先确保使用者的电脑能够访问到仓库,再在项目中配置仓库地址和jar坐标就行了,如下图红框:
程序员欣宸
2021/12/07
1.4K0
Gradle项目的jar发布到私有仓库
推荐阅读
相关推荐
Android模块化开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验