build.gradle之Repository配置

在配置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地址。

注意:

  1. 我們配環境時很多時候都是使用MAVEN_HOME或者直接在path中輸入bin路徑了,導致mavenLocal 無法生效;
  2. 必須配置環境變量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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章