文章大綱
引言
前面開發 Gradle 插件系列文章介紹了本地maven倉庫搭建軟件Nexus的使用,今天介紹一個升級版的“Nexus”——JFrog Artifactory的使用。
一、JFrog Artifactory 概述
藉助本地maven倉庫,我們可以把項目重構爲以下的架構
藉助maven遠程庫我們可以輕易查詢出各個第三方的開放庫所需要依賴的庫。
二、JFrog Artifactory Pro 破解
下載JFrog Artifactory 6.x Pro 的軟件和破解包,解壓之後以管理員啓動cmd並切換到artifactory-injector-1.1 jar包對應的路徑下執行
當注入構件完畢之後,會再次彈出選項列表,輸入1 就可以生成License
回到Artifactory的解壓目錄,執行artifactory.bat批處理腳本,然後在瀏覽器打開http://localhost:8081/鏈接,
Artifactory啓動成功後,根據提示需要輸入生成 License key即可,接下來Enjoy Artifactory吧。
每次通過瀏覽器打開Artifactory 時記得先啓動批處理腳本,否則你會收到404的。
三、創建Artifactory 倉庫
Artifactory提供了三種類型的倉庫:本地倉庫Local、遠程倉庫Remote和虛擬倉庫Virtual。
1、本地倉庫Local
本地倉庫可以通過Deploy上傳並保存一些本地的構件,包括jar包、aar、壓縮包、文件等等一切本地的文件,適用於保存一些靜態不會經常變化的構件。
2、遠程倉庫Remote
遠程倉庫Remote 允許通過映射關係來直接引用或者代理現有的遠程倉庫,比如說可以直接代理阿里雲的Maven倉庫等等。
阿里雲Maven 倉庫列表:
倉庫名 | 簡介 | 實際地址 | 使用(代理)地址 |
---|---|---|---|
jcenter | JFrog公司提供的倉庫 | http://jcenter.bintray.com | https://maven.aliyun.com/repository/jcenter |
mavenLocal | 本臺電腦上的倉庫 | {USER_HOME}/.m2/repository | {USER_HOME}/.m2/repository(Windows) /home/{USER}/.m2/repository (Linux) |
mavenCentral | Sonatype公司提供的中央庫 | http://central.maven.org/maven2 | https://maven.aliyun.com/repository/central https://maven.aliyun.com/nexus/content/repositories/central |
Google公司提供的倉庫 | https://maven.google.com | https://maven.aliyun.com/repository/google https://maven.aliyun.com/nexus/content/repositories/google https://dl.google.com/dl/android/maven2 | |
jitpack | JitPack提供的倉庫 | https://jitpack.io | https://jitpack.io |
public | jcenter和mavenCentral的聚合倉庫 | https://maven.aliyun.com/repository/public https://maven.aliyun.com/nexus/content/groups/public | |
gradle-plugin | Gradle插件倉庫 | https://plugins.gradle.org/m2 | https://maven.aliyun.com/repository/gradle-plugin https://maven.aliyun.com/nexus/content/repositories/gradle-plugin |
3、虛擬倉庫Virtual
Virtual 虛擬倉庫既不能接收上傳的構件也不能與現有的遠程倉庫建立具體的映射關係,主要用於把Artifactory 裏的倉庫進行分組,這樣子需要引入多個倉庫時不必把每一個的鏈接地址都貼出來,只需要把這些倉庫關聯到一個Virtual 裏然後 引入這個Virtual庫就可以了
四、Android Studio使用Artifactory 倉庫
記得先啓動Artifactory
1、引入gradle 插件
gradle/wrapper/gradle-wrapper.properties
#Tue Mar 24 11:10:36 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
//改成你自己的Artifactory Local倉庫
distributionUrl=http\\://localhost:8081/artifactory/android-gradle/gradle-5.4.1-all.zip
2、引入google、jcenter maven庫
buildscript {
repositories {
maven{
url 'http://localhost:8081/artifactory/list/android-basic-group/'
}
google()
jcenter()
}
}
allprojects {
repositories {
maven{
url 'http://localhost:8081/artifactory/list/android-basic-group/'
}
google()
jcenter()
}
}
...
當Gradle 構建項目時候是按照順序進行解析加載的,當可以從配置的maven庫加載到需要的庫時,就不會再到google、jcenter的maven庫中去加載了。如果你覺得每一個項目都需要這樣配置比較麻煩的話,那麼可以新建一個名爲init.gradle的腳本:
buildscript {
repositories {
maven{
url 'http://localhost:8081/artifactory/list/android-basic-group/'
}
google()
jcenter()
}
}
allprojects {
repositories {
maven{
url 'http://localhost:8081/artifactory/list/android-basic-group/'
}
google()
jcenter()
}
}
並複製到到USER_HOME/.gradle/下即可,當Gradle構建項目時就會跑到android-basic-group映射的倉庫中去下載庫,最後依然是緩存到.gradle下對應的目錄中。