简介
我们在使用Android Studio开发安卓项目时,会引用到官方 sdk 或者他人的库,方法都是在 module 的 build.gradle文件中添加如下代码:
implementation 'com.android.support:appcompat-v7:28.0.0'
一行代码就可以把我们想使用的库引入到了项目中。然而一般情况下我们要想引入自己开发的库,则是将整个 module 导入项目,并在需要引用该module的module的build.gradle文件中添加如下代码:
implementation project(':lib_utils')
如果项目较大,多人在同一个项目目录下编写代码既不优雅也不安全。
假如我们也只需要在 build.gradle 文件中使用一行 implementation 代码就能实现引入自己或同事的 module 模块,而不需要关心这个 module 放在哪里,那岂不是很开心。
发布
搭建Maven私服
搭建maven私服有多种方式(例如JFrog的Artifactory、sonatype社区的nexus),我们使用Nexus。
具体搭建过程不做介绍。
上传库到Nexus
添加配置信息
-
在项目根目录local.properties添加
MAVEN_REPOSITORY_RELEASE_PATH=http://xxx.xxx.xxx.xxx:xxxx/repository/maven-releases/
PACKAGE_TYPE=aar
GROUP_ID=per.goweii
NEXUS_USERNAME=Nexus用户名
NEXUS_PASSWORD=Nexus密码
-
在库Model的gradle.properties添加
ARTIFACT_ID=库名
VERSION_NAME=库版本号
创建上传gradle文件
-
在项目根目录新建maven.gradle
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
def properties = new Properties()
def inputStream = project.rootProject.file('local.properties').newDataInputStream()
properties.load(inputStream)
def MAVEN_REPOSITORY_RELEASE_PATH = properties.getProperty('MAVEN_REPOSITORY_RELEASE_PATH')
def NEXUS_USERNAME = properties.getProperty('NEXUS_USERNAME')
def NEXUS_PASSWORD = properties.getProperty('NEXUS_PASSWORD')
def PACKAGE_TYPE = properties.getProperty('PACKAGE_TYPE')
def GROUP_ID = properties.getProperty('GROUP_ID')
repository(url: MAVEN_REPOSITORY_RELEASE_PATH) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
packaging PACKAGE_TYPE
groupId GROUP_ID
artifactId ARTIFACT_ID
version VERSION_NAME
}
}
}
}
-
在需要上传的Model的build.gradle添加
apply from:'../maven.gradle'
开始上传
确认库配置信息(尤其是版本名)无误后Sync项目,然后在Android Studio的Terminal中输入如下命令开始上传。上传成功会有SUCCESS提示。
- Windows系统
gradlew uploadArchives
- Mac系统
./gradlew uploadArchives
引用
添加仓库地址
在Project的build.gradle中添加仓库地址
maven { url 'MAVEN_REPOSITORY_RELEASE_PATH' }
添加库依赖
在Model的build.gradle中添加库依赖
implementation 'GROUP_ID:ARTIFACT_ID:VERSION_NAME'