环境
文章的运行环境为:
AndroidStudio版本:3.1.4
Gradle版本:3.1.4
Nexus版本:3.13.0
前言
dependencies {
...
implementation 'org.litepal.android:core:2.0.0' //数据库
implementation 'org.greenrobot:eventbus:3.1.1'
...
}
作为一名Android开发者,像上面一行代码导入一个框架的方法,肯定很熟悉。
这些框架的代码就放在作者的Maven仓库里面,然后给我们远程引入到自己的项目里面。
现在使用GitHub+jitpack搭建打包仓库的也是很常见,就是jitpack将GitHub中配置好的代码打包到自己的仓库帮用户代理。详情见:GitHub+jitpack生成自己的Compile依赖
Maven本地仓库
由于AndroidStudio(AS)自带Maven仓库打包插件,所以无需任何环境和工具,我们也可以用AS打包代码到本地,然后直接本地引用即可。
打包代码
我们在需要打包的Library的build.gradle中添加如下代码:
apply plugin: 'maven' //maven仓库插件
....
uploadArchives {
repositories.mavenDeployer {
//打包的路径
repository(url: 'file://D:/nexus-3.13.0/Repositories')
pom.project {
version '1.0' //版本号,多次打包不能一致
artifactId 'PrintHello' //识别Id,与项目名称一致即可
groupId 'com.demon' //组号,类似包名
packaging 'aar' //打包格式
description 'PrintHello dependences lib' //描述
}
}
}
然后如下图操作,打包完成后,我们会在打包的路径看到生成的文件。
引入代码
首先在工程的根目录的build.gradle中添加:
allprojects {
repositories {
...
//上面打包的路径
maven(){url 'file://D:/nexus-3.13.0/Repositories'}
...
}
}
然后在项目的build.gradle中添加:
dependencies {
...
//格式:groupId:artifactId:version
implementation 'com.demon:PrintHello:1.0'
...
}
点击Sync now,如果成功,则引入成功。
Nexus3.X搭建私服仓库
上面的代码在本地,只能自己使用。要给别人使用,我们就需要搭建一个远程仓库。
下面介绍如何本地使用nexus3.X搭建私服仓库(也可以搭建在服务器上),并打包代码和引用。
Nexus下载:https://www.sonatype.com/download-oss-sonatype
安装配置如下:Windows下安装Nexus OSS 3.4.0
配置Nexus
将下载的nexus.xxx.zip文件解压到自定义目录下即可。
打开…/etc/nexus-default.properties文件,配置Nexus端口和上下文路径。
- application-host : Nexus服务监听的主机
- application-port: Nexus服务监听的端口,
- nexus-context-path : Nexus服务的上下文路径
我的配置如下:
# Jetty section
application-port=8081
application-host=127.0.0.1
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
打开…/bin/nexus.vmoptions文件,运行环境配置。
可以配置运行时的最大堆、最小堆等,可以根据个人的电脑以及需要修改。
此处我没有做任何修改。
安装Nexus
在Nexus的bin文件下,运行管理员的cmd。
- 启动nexus服务:
nexus.exe /run
- 安装nexus服务:
nexus.exe /install
- 启动服务:
net start nexus
如果需要卸载Nexus:nexus.exe /uninstall
关闭服务:net stop nexus
登陆Nexus
浏览器输入:127.0.0.1:8081
(若修改了上下文路径,后面需要加上该路径)
点击Sign in
进行登陆,nexus默认的用户名是admin
,密码为admin123
登陆成功便能看见一些默认的仓库。
仓库名 | 作用 |
---|---|
hosted(宿主仓库库) | 存放本公司开发的jar包(正式版本、测试版本) |
proxy(代理仓库) | 代理中央仓库、Apache下测试版本的jar包 |
group(组仓库) | 使用时连接组仓库,包含Hosted(宿主仓库)和Proxy(代理仓库) |
virtual (虚拟仓库) | 基本用不到,重点关注上面三个仓库的使用 |
创建仓库
选择Maven2(hosted)
创建仓库成功后,看到仓库可以点击Copy复制仓库路径。
打包代码
我们在需要打包的Library的build.gradle中添加如下代码:
apply plugin: 'maven' //maven仓库插件
....
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
//Copy复制仓库路径
repository(url: 'http://127.0.0.1:8081/repository/Test/') {
//你Nexus的账户密码
authentication(userName: 'admin', password: '123456')
}
pom.project {
version '1.0.0'
artifactId 'PrintHello'
groupId 'com.demon'
packaging 'aar'
description 'PrintHello dependences lib'
}
}
}
}
可以看见跟本地打包相比就是修改了仓库的路径,和添加仓库的认证信息。
如上本地打包,在Gradle中执行uploadArchives即可。
打包成功后,如下图能打包成功后生成的文件。
引入代码
首先在工程的根目录的build.gradle中添加:
allprojects {
repositories {
...
//Copy复制仓库路径
maven(){url 'http://127.0.0.1:8081/repository/Test/'}
}
}
然后在项目的build.gradle中添加:
dependencies {
...
//格式:groupId:artifactId:version
implementation 'com.demon:PrintHello:1.0.0'
...
}
点击Sync now,如果成功,则引入成功。
跟本地引入,除仓库路径需要修改外,其余完全一致。