做為一名有經(jīng)驗的安卓開發(fā)人員,相信大家都知道Maven倉庫與Jcenter倉庫,這是目前全球最常用的兩個,其中Jcenter是目前最大的一個Java與Android開源軟件構建倉庫,而且我們經(jīng)常用的Android Studio就是默認支持Jcenter
材料
- JFrog提供免費并開源的Artifactory環(huán)境包,點擊下載,官網(wǎng):https://www.jfrog.com
- 系統(tǒng)環(huán)境:Linux
步驟
-
解壓下載下來的zip壓縮包,目錄結構如下[version | 4.7.4]:
dir-list - 保證系統(tǒng)環(huán)境當前已經(jīng)配置了Java環(huán)境,并版本1.8或以上
- Linux直接命令行啟動“artifactory.sh”
-
Linux下當啟動成功后,命令行會出現(xiàn)如下提示:
linux-started - 測試訪問:http://localhost:8081/artifactory,賬號:admin;密碼:password
home - 至此就成功了!簡單吧,基本沒有任何技術問題
實現(xiàn)Gradle腳本發(fā)布
- 首先加載Gradle插件
dependencies {
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.1.1'
}
- 完整發(fā)布代碼<假設此文件名為local-maven.gradle>
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
def artifactVersion = '1.0-SNAPSHOT'//發(fā)布的版本
publishing {
publications {
aar(MavenPublication) {
groupId = 'lsw.widget'
artifactId project.name
version = artifactVersion
artifact "${project.buildDir}/outputs/aar/${project.name}-release.aar"
}
}
}
artifactory {
contextUrl = "http://localhost:8081/artifactory"http://本地倉庫地址
publish {
repository {
/**
repoKey:指定發(fā)布到的倉庫名稱
*/
//這里判斷了當前發(fā)布的版本是不是‘快照’版本;
//其中'libs-snapshot-local' : 'libs-release-local'是兩個倉庫名稱
repoKey = artifactVersion.endsWith('SNAPSHOT') ?
'libs-snapshot-local' : 'libs-release-local'
username = "admin" // 發(fā)布者用戶名
password = "password" // 發(fā)布者密碼
maven = true
}
defaults {
publishArtifacts = true
//這里的'aar'對應publishing任務中的'aar',任務名稱可自定義
publications('aar')
publishPom = true //Publish generated POM files to Artifactory (true by default)
publishIvy = false //Publish generated Ivy descriptor files to Artifactory (true by default)
}
}
resolve {
repository {
repoKey = 'jcenter'
username = "admin" // 發(fā)布者用戶名
password = "password" // 發(fā)布者密碼
}
}
}
- 然后在要發(fā)布的library工程中的build.gradle文件中的最后一行編寫引入代碼
//local-maven.gradle 根據(jù)自己新建的文件路徑與文件名為準,當前表示引入與當前文件同一目錄下的 local-maven.gradle 文件
apply from: 'local-maven.gradle'
- 執(zhí)行腳本代碼
命令行執(zhí)行: gradlew assembleRelease artifactoryPublish
或 在Android Studio中的Gradle projects依次執(zhí)行assembleRelease與artifactoryPublish
檢查發(fā)布成功與否
打開 http://localhost:8081/artifactory 登錄管理后臺,如圖:
此處輸入圖片的描述
項目中引用
repositories {
//release倉庫Uri
maven { url 'http://localhost:8081/artifactory/libs-release-local/' }
//snapshot倉庫Uri
maven { url 'http://localhost:8081/artifactory/libs-snapshot-local' }
}
dependencies {
compile 'com.jay:widget:1.0-SNAPSHOT'
}
科普下Module ID的組成
什么?Module ID是什么玩意?“ com.android.support:appcompat-v7:23.3.0 ”,這個見過吧,就是這個東西,那么這個module id由哪些組成,就拿這個v7兼容包舉例:
groupId: com.android.support
artifactId: appcompat-v7
version: 23.3.0
引入成功
完整local-maven.gradle文件見github地址:https://github.com/JaySong/JFrog-Artifactory