一、场景
公司有多个项目并行开发,项目间有一些通用模块,由于基于Android Studio开发,无法像Eclipse那样可以多个项目引用同一个Library,导致几个项目间的通用模块复用非常麻烦和困难。
二、需求
随着公司App项目越来越复杂,希望可以抽离一个基础服务,由专门的人员进行维护和部署,提供给其他的项目使用,并保证核心代码不泄露。
三、Maven私服搭建
使用Nexus搭建一个公司内部使用的Maven私服,用来部署基础库,其他项目通过gradle下载和编译基础库。关于Nexus的介绍和配置很简单,具体可以查看这里:Android 项目部署之Nexus私服搭建和应用。
四、上传库至私服
在project下的gradle.properties文件中定义Nexus上传所需的通用属性,方便如果有多个库需要部署时,不需要修改每一个库中的配置。
#本地库的nexus地址
MAVEN_URL=http://192.168.21.51:8081/repository/OneMTSDKFramework/
MAVEN_SNAPSHOT_URL=http://172.28.1.*:8081/nexus/content/repositories/thirdparty-snapshot/
#登录nexus的用户名
NEXUS_USERNAME=admin
#登录nexus的密码
NEXUS_PASSWORD=admin123
#项目的Group id
GROUP_ID=com.sc.framework
#项目文件类型
TYPE=aar
#项目描述
DESCRIPTION=this is project decription
修改module对应的build.gradle文件,配置以谁的名义上传这个库,上传到什么地方,这个库叫什么名字,属于哪个group,ID和version、description、packageing等信息。
apply plugin: 'maven'
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
snapshotRepository(url: MAVEN_SNAPSHOT_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
repository(url: MAVEN_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '1.0.0'
artifactId 'PrivateFramework'
groupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}
artifacts {
archives file('PrivateFramework.aar')
}
打开Gradle projects(在AS的右边栏),找到对应的module,展开,找到Tasks下面的upload标签并双击,在Gradle Console标签可以查看是否上传成功。
五、使用已上传的库
在project的build.gradle文件中指定私有仓库的地址:
allprojects {
repositories {
jcenter()
maven { url 'http://192.168.21.51:8081/repository/PrivateFramework'}
}
}
在需要依赖私有仓库的build.gradle文件中设置依赖关系:
compile 'com.sc.framework:privateframework:1.0.0'
网友评论