在配置gradle構建配置時,通常需要告知gradle代碼構建所需的依賴包從哪裏下載,或者發佈到什麼地方去,那麼就需要配置代碼的repository,在build.gradle中,通常有三個地方需要配置。
repositories{}、
buildScripts.repositories{} 以及
publishing.repositories{}
gradle編譯構建時所需的repositories支持很多種選擇,比如我們選擇使用本地文件,本地倉庫,遠程倉庫,自定義倉庫等,本地文件方式使用較少,在此不展開說明。
倉庫地址配置
- 申明maven本地倉庫 mavenLocal()
配置腳本如下:
repositories {
mavenLocal()
}
Gradle使用與Maven相同的策略去定位本地Maven緩存的位置。
如果在settings.xml中定義了本地Maven倉庫的地址,則使用該地址。
在USER_HOME/.m2/settings.xml文件中的配置會覆蓋M2_HOME/conf/settings.xml,
如果沒有settings.xml配置文件,Gradle會使用默認的USER_HOME/.m2/repository地址。
注意:
- 我們配環境時很多時候都是使用MAVEN_HOME或者直接在path中輸入bin路徑了,導致mavenLocal 無法生效;
- 必須配置環境變量M2_HOME`
- 申明遠程可用的製品倉庫
配置腳本如下:
repositories {
jcenter()
}
- 通過URL申明自定義倉庫
repositories {
maven {
url 'http://repo.mycompany.com/maven2'
}
}
gradle除了支持一個倉庫外,還支持配置多個倉庫,可以是不同類型的倉庫
- 申明多個倉庫
repositories {
jcenter()
maven {
url "https://maven.springframework.org/release"
}
maven {
url "https://maven.restlet.com"
}
}
- 申明倉庫過濾器
repositories {
maven {
url "http://repo.mycompany.com/maven2"
content {
//這個製品庫只包含組名以 "my.company"的工件
includeGroup "my.company"
}
}
jcenter {
content {
// 這個製品庫包含所有的除了組名以 "my.company"開始的工件
excludeGroupByRegex "my\\.company.*"
}
}
}
- maven 倉庫過濾器配置
repositories {
maven {
url "http://repo.mycompany.com/releases"
mavenContent {
releasesOnly()
}
}
maven {
url "http://repo.mycompany.com/snapshots"
mavenContent {
snapshotsOnly()
}
}
}
通常,爲了安全起見,很多的製品庫庫需要認證,在配置時需要怎麼操作呢?
下面列出了不同類型對應的認證方式
類型 | 認證方式 |
---|---|
file | none |
http | username/password |
https | username/password |
sftp | username/password |
s3 | access key/secret key/session token 或 環境變量 |
配置腳本如下:
repositories {
maven {
url "http://repo.mycompany.com/maven2"
credentials {
username 'user'
password 'password'
}
}
maven {
url "sftp://repo.mycompany.com:22/maven2"
credentials {
username 'user'
password 'password'
}
}
ivy {
url "s3://myCompanyBucket/ivyrepo"
credentials(AwsCredentials) {
accessKey "someKey"
secretKey "someSecret"
//可選項
sessionToken "someSTSToken"
}
}
}
參考文檔
gradle dsl鏈接: link.
gradle userguide