为啥要搭建Maven私服呢,因为有时候公司不便将一些内部封装好的jar或者aar的架包放到外网上,或者当项目大一点的时候需要将一些业务封装成一个模块,来使用就需要本地私服了,注意上传上去的.aar文件不是整个项目哦。
一 Nexus的搭建
1:首先得安装Java的jdk;
2:下载Nexus:https://support.sonatype.com/hc/en-us/articles/218637467-Download-Nexus-Repository-Manager-3并安装;
我的下载的是Windows的:
也就是最新的那一个,下载解压后放到一个盘下,我的在D盘下,可以将目录路径添加到Path中,我的路径是D:\nexus-3.2.1-01-win64\nexus-3.2.1-01\bin也可以不放。
使用Windows的黑窗口的,进到刚才下载下解压的文件夹下,里面有两个文件如图:
进入第一个文件下的bin目录下
执行 nexus.exe /run 就可以啦,如果是第一次运行时间比较长一些,之后每次用的时候都要去运行起来。
注意一哈直接运行nexus.exe是不行的,使用管理员权限也不行,只能在黑窗口里运行。
如果不出错运行起来后,在浏览器中:http://localhost:8081/
Nexus的默认端口号是8081,如果出了冲突需要解决一哈,这个就百度一哈吧。成功后的界面如下:
现在什么也木有,需要登录后端去创建库。搭建Nexus的工作已经完成了。
二:在Nexus中创建库
右上角Sgin in登录,登陆默认账户,账户名:admin 账户密码:admin123;登陆后点击 小齿轮就是那个设置项,如图:
点击Repositories
点击创建那个左上角的+号create repository,之后点击maven2(hosted);
在下面的界面里面填入库名和其他的一些设置如图所示:
之后点击Create repository就可以了,这是我创建库:
三:将Android Studio中的lib上传库中
在全局的build.gradle的allprojects 》repositories 下添加 mavenLocal()的支持。
如图:
之后在本地上lib的build.gradle 中添加对maven
在最开头apply plugin: ‘com.android.library’下面添加apply plugin: ‘maven’
同时添加uploadArchives对上传的lib 的一些设置。
uploadArchives{
repositories.mavenDeployer{
repository(url:"http://localhost:8081/repository/com.shaodf.shaodflib/"){
authentication(userName:"admin",password:"admin123")
}
pom.version="0.0.1"
pom.artifactId="shaodflib"
pom.groupId="shaodf"
}
}
url对应的是你的库的路径,获取路径的方法如下:
点击copy就可以获得路径。
authentication设置上传到的账户名密码;
pom.version=”0.0.1”是版本号;
pom.artifactId=”shaodflib”;是这个lib在库中的名字
pom.groupId=”shaodf”;这个是组名,指明这个lib在库中是那个组里的
这里的 pom.groupId和pom.artifactId和注意一哈,一会儿会用到。
完整的图:
之后就是上传了,点击最右下角的gradle之后找到自己的那个lib点开Tasks>upload双击uploadArchives等待上传完场。操作图示:
有时候会报上传失败,但是如不是该项目的错一般不会影响上传的就如我的:
虽然这儿报错了,但是我到后端看了一哈数据是传上去了。估计是在gradle运行到这儿之前已把我的那个lib上传上去了。
看看后端是否有数据,这是我的图
双击自己的库看一哈有数据没,我的上传上去了。
这就把lib上传上来了。
四:下载lib库到自己的项目中引用。
首先在引用的项目的build.gradle中添加本地maven库的地址,就是之前的那个地址:
allprojects{
repositories{
maven{
url "http://localhost:8081/repository/com.shaodf.shaodflib/"
}
}
}
注意依赖关系中添加对该项目的依赖:
compile 'shaodf:shaodflib:0.0.1'
里面的内容格式是: pom.groupId:pom.artifactId:pom.version,错了会获取不到。
或者在后端查看如图:
完整的图
好了,sync now一哈,如果中间没出什么错就可以下载下来了。如果出错了那就仔细回头看看,一般都是有地方写错了啥的。
我在lib中写了一个方法,试了一下是可以没问题的。上图:
到此结束啦!