Android Nexus私有库搭建

相信很多人都发现了,github上很多优秀的开源项目都是以一种组件化的方式来写的,都是直接通过gradle的compile把一个jar包或者aar包引用过来供项目里的代码来使用的。这其实就是把你写好的一个模块放到私有库上,然后直接引用的道理。那么肯定会有很多人有这样的疑惑:AndroidStudio里不是有一个module的概念吗,module不仅可以在其他项目里复用,我只要import一下就可以了,而且还方便修改,万一哪天需求突然变了,那修改起来不是很方便吗!没错,这个也是主管让我去做私有库时候我的第一反应,我觉得module有很强大的优势啊,为什么还要去花精力去做私有库呢!但主管的一句话说服了我,具体怎么说的我忘记了,我就说我理解的吧:私有库的用途是让你在开发其他app时候需要这个模块的时候就直接引入这个模块,而模块的作用相当于一个零件,如果通过module的形式,很容易造成,这个项目里加了方法,改了方法,那个项目里没改,或者改了其他的方法,这样子的形式来作为模块的话当然是不够优秀的。所以,我们要搭建私服,用的最多的就是我要介绍的Nexus了。
首先,你可以在本地先搭个Nexus试试,下载地址:点击打开链接
Nexus 3.xx直接下载.dmg或者.exe即可。Nexus 2.xx则需要下载安装包,然后进行一大堆的配置,具体配置读者可以去自行谷歌或者百度。直接.dmg下载下来很方便噢。噢,安装之前要确保电脑上是否安装了JDK,如果没有安装,那么得先去安装JDK。
安装3.xx的同学安装完以后,打开,进入是这样子的界面:

Snip20170420_2.png

安装2.xx的同学进去是这样的,我也去试了一下:

Snip20170420_3.png

个人觉得3.xx界面上来说友好多了,但是仓库设置稍微有点难找。。。下面均以3.xx为例子讲解,点击右上角的登录,默认账户名密码是admin/admin123。登录进去以后,左上角会有个设置按钮,(有时候会没有,我估计是bug吧,所以很难找,一开始我愣是没找到),进去以后,左边有个Repositories,你会发现已经有很多个仓库建好了,如图:

Snip20170420_4.png

每个仓库都有自己的属性,选择一个仓库就可以查看这个仓库的一些具体信息。我们的目的主要是把我们的项目代码发布到这些仓库里去,既然要发布到这些仓库上去,我们就不想我们的代码外泄出去,那我们就要选择hosted类型的仓库,hosted类型是Nexus oss所在自己本地的服务器上的仓库,比较安全。我们进行操作的时候,其实最主要的还是maven-releases和maven-snapshots两个仓库,这两个仓库有什么区别呢?只是一个Deployment Policy部署协议上的区别,maven-releases上的是Disable Redeploy(不允许重复部署),意思就是部署上去的就是正式版本的库,如果之后更新lib只能以更新版本号的形式操作。而maven-snapshots则是Allow Redeploy(允许重复部署),顾名思义,就是不需要更新版本号,只要groupId,artifactId,version相同就可以进行覆盖,一般用于你的module还没进行完全测试的时候。其实一般项目开发中module中的写的方法都可以在项目中直接引用测试,测试通过以后再上传到私有库上,再加上开发进度比较紧,所以我开发中一般不太上传到snapshots上。。。当然从程序严谨程度上还是有必要进行这一步的。。。这里主要考虑到了成本问题。
仓库搞好了,之后我们就要把我们的代码上传到私有库上了,首先新建一个Android项目,然后new module,在module的bulid.gradle里添加下面配置:

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 = GROUP  
                pom.artifactId = POM_ARTIFACT_ID  
                pom.version = VERSION_NAME  
                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  
    }  
}  

然后在该module目录下添加grade.properties配置文件:

GROUP=//.........  
VERSION_NAME=1.0.0  
POM_ARTIFACT_ID=//.........  
  
SNAPSHOT_REPOSITORY_URL=//....  
RELEASE_REPOSITORY_URL=//....  
NEXUS_USERNAME=admin  
NEXUS_PASSWORD=admin123  

其中GROUP为对应的groupId,看build.gradle就可以知道这里的逻辑是如果groupId名字中包含SNAPSHOT字符,module就发不到snapshots仓库里,否则发布到releases仓库。VERSION_NAME就是对应的版本号,记住发到releases仓库上的项目更新以后版本号要加上去。POM_ARTIFACT_ID就是对应的artifactId值。在私有库中,你的项目是以group:artifactId:version的形式存放的。接下来两个url就是对应snapshots和releases的仓库地址。如果你是本地搭建的nexus,如果你是mac,在终端中输入ifconfig命令行就可以知道你的ip地址了。
配置完毕,在AndroidStudio右边的Gradle面板中找到对应的module,然后在upload里有一个uploadArchive选项,双击就可以了,然后就build success了!私有库上传成功!

私有库上传成功以后,我们就可以在所有项目中直接引用这个私有库了。引用的方法很简单,在项目的build.gradle里allprojects下添加:

maven{  
    url("http://192.168.20.78:8081/repository/maven-releases/")  
}  

然后就可以在app目录下build.gradle里直接compile就可以了,记住格式,group:artifactedId:version,就像这样:

compile 'com.cgtz.test:test:1.0.0' 

具体公司项目开发中,新创一个git的项目,在这个项目中新建module上传私有库,并可以在app里对各个方法进行测试,至此,私有库的玩法就介绍完毕了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • 如需转载请标明出处:http://blog.csdn.net/u011974987/article/details...
    Xiho丶阅读 3,050评论 1 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • 放一把红色的伞吧在下雨的窗前如今再也没有一丝力气移植玫瑰,到室里 所有的欢喜都应了当初的承诺丢了夜的深与真青鸟便是...
    立黄昏阅读 1,359评论 83 65
  • 成长还有一个名字叫孤独。它直抵人内心最柔软的部分,或是在夜深人静或是在破晓黎明,或是在热闹街头或是在孤身一人…… ...
    就着孤独下酒阅读 506评论 0 0
  • 上班上的有些麻木,感觉生活一遍又一遍的重复,没有了激情。 今天心情不好,有些生气,觉得虚度了一天。我喜欢学新的东西...
    木象公主阅读 490评论 0 0