Android 項(xiàng)目中Gradle中默認(rèn)使用jcenter
倉(cāng)庫(kù),網(wǎng)絡(luò)不好的時(shí)候神馬速度與激情都沒了。厢洞。飒焦。
下面是默認(rèn)的build.gradle
配置,只有jcenter
悼沿,成敗在此一舉
// 這里配置的是gradle plugin依賴的東東等舔,比如build tools
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
// 這里配置的是具體項(xiàng)目依賴的東東,比如三方庫(kù)
allprojects {
repositories {
jcenter()
}
}
改善生活質(zhì)量的小技能
1. 在當(dāng)前項(xiàng)目的gradle
配置中增加其他源糟趾,只對(duì)當(dāng)前項(xiàng)目有效
// 阿里云 maven 服務(wù)慌植,阿里云的maven服務(wù)應(yīng)該算是比較靠譜的了吧
def MAVEN_ALIYUN = 'http://maven.aliyun.com/nexus/content/groups/public'
buildscript {
repositories {
jcenter()
maven {
url MAVEN_ALIYUN
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
allprojects {
repositories {
jcenter()
maven {
url MAVEN_ALIYUN
}
}
}
阿里云的maven倉(cāng)庫(kù)中已經(jīng)包含了jcenter
等幾個(gè)常用的倉(cāng)庫(kù),所以速度還是很有保障滴义郑。
配置多個(gè)maven倉(cāng)庫(kù)時(shí)蝶柿,優(yōu)先級(jí)從上到下,也就是先從上面聲明的倉(cāng)庫(kù)去找資源非驮,找不到才往下找交汤,常用的maven服務(wù)一般用 nexus
這樣就能飛一般的加載一些依賴庫(kù)了,但是不好的地方就是每個(gè)項(xiàng)目都要改動(dòng)院尔,還是不爽~
2. 使用gradle
全局配置(推薦)
在不改變?cè)许?xiàng)目代碼的情況下蜻展,使用全局gradle初始化腳本配置來修改一些屬性最合適不過了
將init.gradle
文件放到.gradle
目錄下使用即可喉誊,不用跟隨gradle版本不同而改動(dòng),如果是放到具體某個(gè)gradle版本的init.d
目錄下則每個(gè)版本都要放一次纵顾。
*unix用戶 :
~/.gradle
windows用戶:C:\Users\XXUser\.gradle
init.gradle
具體內(nèi)容如下伍茄,還可以做一些其他的功能
// 內(nèi)網(wǎng)部署的 Maven
def NEXUS_SERVER = "http://nexus.company.com/content/groups/public"
def NEXUS_USERNAME = "username"
def NEXUS_PASSWORD = "password"
// 阿里云 maven 服務(wù)
def MAVEN_ALIYUN = 'http://maven.aliyun.com/nexus/content/groups/public'
allprojects {
buildscript {
repositories {
maven {
// 需要賬號(hào)密碼認(rèn)證的maven服務(wù)
credentials {
username NEXUS_USERNAME
password NEXUS_PASSWORD
}
url NEXUS_SERVER
}
maven {
url MAVEN_ALIYUN
}
jcenter()
}
}
repositories {
maven {
credentials {
username NEXUS_USERNAME
password NEXUS_PASSWORD
}
url NEXUS_SERVER
}
maven {
url MAVEN_ALIYUN
}
jcenter()
}
}
還可以把jitpack
也放到這里來,這樣就不用在要用到的項(xiàng)目中聲明了
maven { url 'https://jitpack.io' }
3. 移除jcenter,用其他源替代施逾,簡(jiǎn)單粗暴
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
歡迎推薦其他穩(wěn)定的源~
開源中國(guó)的maven服務(wù)已經(jīng)廢了
最后附上一個(gè)sample init.gradle
參考:
https://docs.gradle.org/current/userguide/init_scripts.html
Sonatype Nexus