前言
文章内容并不高大上,但总觉得折腾几天写点作为总结也是需要,但倘若能帮上有需要的同学也算是一种意外的收获。
前段时间兴奋无比的加入到一家新公司,由于该公司管理的种种原因,开发的机子只能使用公司提供的仅限内网的机子。what!开发机子的不能连接外网当时真是一脸懵逼啊。开发Android的同学想必都知道gradle吧。gradle的编译过程会使用到许多的依赖库。
不陌生吧,jcenter() 就是提供我们许许多多依赖库的jcenter仓库,仓库地址,也是Maven仓库的一个分支,classpath'com.android.tools.build:gradle:2.2.3' 这就是我们所使用到的gradle用于android编译的一个插件(这样描述好像有点问题),总之这个会涉及到一大堆的依赖库。在没有外网情况搭建Android Studio 的开发环境,对于这些所涉及到的依赖库怎么解决?最开始的,最直接的方法,就是拷贝同事已经搭建的环境,就是拷贝同事机子里的 .gradle(window 一般位于用户目录下,Mac或linux 就位于用户根目录下) 。但是就是问题依然很多。。。当时对gradle真是又爱又恨,即熟悉又陌生,朝夕相处了一年多却对它的内部机制一无所知。
所以在工作之余安排了下gradle的学习计划。
1、起码要看的懂基本的groovy,因为gradle是基于groovy语言
2、就是了解gradle运行机制。(后续在补充,目前有点乱)
Nexus的服务器搭建
1、下载 如果对Nexus是个小白(如我)或者只是作为简单的Maven仓库,建议下载2.14操作较为简单。
2、解压,nexus-2.14.3-02是Nexus的运行环境所需要的,将其中的bin文件添加到系统环境中,Mac直接运行其中的 nexus start ,(Window nexus.bat) 可能需要使用到系统权限运行。
3、不出意外的话http://localhost:8081/nexus/ 就可以直接访问你的Nexus了,默认的登陆admin密码admin123
最后我又根据别人的做法做了如下的配置(这些配置我也没怎么弄懂)
使用方法
一、像我司那样只能访问内网的,jcenter()提供的库自然就用不上了,那么该如何配置gradle所需要的依赖包呢?我设想过两个方法
1、通过https://android.googlesource.com/platform/tools/base 下载android官方给我提供的插件源码,然后编译上传到Nexus,可是源码下载下来整套源码太过于庞大了(应该是我功底不够,后续研究能不能编译成功)以至于我无从入手,这个方案如果能够顺利编译成功显然是最理想的。
2、没有高大上的方法,笨的方法也可以蛮用上啊,毕竟最终目的就是搭建好这么一个编译环境 所需要的所有依赖库。下面讲讲这个又笨又暴力的方法
1)直接通过android studio 创建一个android项目,在项目build.gradle 里面配置好如下
2、gradle同步更新
3、到jcenter仓库中找我们需要的jar包
其中 .jar 和 .pom 是maven库必须要的其它的可忽略,然后将下载下来的两个文件图2中的本地仓库地址放到同样的文件目录下
好了。第一个依赖的jar包配置好了,继续同步会更新后序还有N多个的依赖jar包需要你去一一配置,整个下来耗时一个多小时吧。耐心点,方法虽笨但可行,如果有更好的方法希望你也支下招。
附加
这个Maven的服务器也一样可以当作普通的文件服务器使用
既然有了文件服务器我们就索性把gradle***-all.zip 下载下来放到maven服务器上,尤其对我司这种只能使用内网的环境就更好用省去了手动配置的过程。
配置好如下
这样Android-studio gradle的局域网环境就搭建好了
二、上传已有的jar包
有时候我们的项目需要依赖一些jar包,gradle也提供我们依赖本地jar包的方法
只要把我们所有依赖的jar包放到相应module下 java/libs 中就可以了,gradle 还提供依赖单个jar包的方法 compile file("libs/quick.jar")。如果所依赖的jar不多倒也好维护,将jar包一并上传到版本管理器中(svn/git)。但如果所依赖的jar包过多的话,又会带来维护上的问题,这些jar包都没有相应的版本号,所以难免搞不清楚它们的版本号。Maven对于我们维护这些jar包提供了很大帮助,
Maven 通过这么一套 Group:Artifact:Version 作为一个依赖库的唯一坐标。这样我们就很清楚每个jar包的具体的信息,对于维护这些依赖关系是不是简单了许多。
作为演示我们就以这么个简单的项目上传quickstart-1.0.jar到我们的搭建的maven库中,确定了上传的G:A:V 按照以下步骤上传
成功上传后,可以查看maven的仓库
上传成功根据GAV信息,引入依赖就可以OK啦 如:compile'com.passenger:quickstart:1.0'
三、上传公司的工具类等
公司有些项目如工具类都会在多个项目中共享到,可以通过时时上传这些工具类的aar/jar到maven库中,下面以android项目为例
这是一个android library。gradle已经为我们提供了发布Library到Maven库的插件,只要简单的在build.gradle 中配置相关参数就可以了
配置好执行 gradlew uploadArchives
至此Library库成功到发布我们到自己搭建的maven库中了。
还没弄明白为什么我的版本后面要加上@aar。不加上就会出现少包的情况,也算个坑吧。