Android Artifactory----依賴管理說明
作者:
代碼管理
代碼版本控制統(tǒng)一基于GitHub管理,使用方式基于Android Studio的gradle方式依賴,所有Library配置內(nèi)部倉庫地址,上傳到內(nèi)部JCenter倉庫來管理依賴,編寫Readme文檔,列出功能描述、使用方式以及其他需要注意事項(xiàng),比如混淆配置。
Android JCenter本地倉庫
搭建倉庫的目的
- 搭建本地倉庫方便依賴管理,避免多人多次同步網(wǎng)絡(luò)倉庫
- 組件化拆分,網(wǎng)絡(luò)上一些開源庫大多功能臃腫,很多時(shí)候不需要那么多的功能,所以需要拆分以減小APK大小,以及代碼編譯速度
倉庫上傳步驟
- 檢測(cè)你的jdk版本是否為1.8及以上
java -version
- 創(chuàng)建library project,在Project下的build.gradle文件添加
buildscript {
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
}
}
- module引用插件
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
配置maven和artifactory
-
配置項(xiàng)目參數(shù)
以Utils項(xiàng)目,包名為com.adinnet.utils為例
groupId:com.adinnet.utils // 一般為包名
artifactId:utils // 一般為library module名字
version:1.0.0 // 當(dāng)前l(fā)ibrary版本號(hào)
示例:
def packageName = 'com.adinnet.utils'
def libraryVersion = '1.0.0'
publishing {
publications {
aar(MavenPublication) {
groupId packageName
version = libraryVersion
artifactId project.getName()
// Tell maven to prepare the generated "*.aar" file for publishing
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
}
}
}
-
配置Artifactory倉庫參數(shù)
在library module的gradle文件添加
artifactory {
contextUrl = 'http://localhost:8081/artifactory' // 表示要發(fā)布到哪里去,上下文連接
publish {
repository {
repoKey = 'libs-release-local' // artifactory分支,可在artifactory查看
username = "admin" // artifactory 默認(rèn)管理員
password = "password" // artifactory 默認(rèn)管理員密碼
}
defaults {
publications('aar') // 表示要發(fā)布的文件類型
publishArtifacts = true
properties = ['qa.level': 'basic', 'dev.team': 'core']
publishPom = true // 是否將自動(dòng)生成的pom.xml文件發(fā)布到Artifactory
}
}
}
-
打包并發(fā)布到Artifactory
在library主項(xiàng)目下,執(zhí)行g(shù)radle命令
gradlew assembleRelease artifactoryPublish
assembleRelease在前表示先打包,artifactoryPublish在后表示打包完以后發(fā)布到artifactory當(dāng)中,完成后打開Artifactory檢查libs-release-local目錄
-
引用本地倉庫的library
在Project的build.gradle文件添加地址
allprojects {
repositories {
jcenter()
maven { url "http://localhost:8081/artifactory/libs-release-local"} // localhost IP
}
}
在其他module中引用
dependencies {
compile 'com.adinnet.utils:utils:1.0.0';
}