1. 程式人生 > >Gradle 教程說明 使用者指南 第8章依賴管理基礎

Gradle 教程說明 使用者指南 第8章依賴管理基礎

8.1 什麼是依賴管理?

依賴管理非常粗略地分為兩部份:

· build 依賴自什麼東西

· build 釋出什麼東西


8.2 宣告你的依賴

讓我們來看看一些依賴宣告。這是一個基本構建指令碼:

例,宣告依賴
build.gradle:
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}

這個構建指令碼說,有關該專案的幾件事情。首先,它指出Hibernate的核心3.6.7.Final需要參與編譯專案。

這意味著,Hibernate的核心,需要在執行時依賴。

構建指令碼還規定,編譯該專案的測試需要junit> = 4.0。

它還告訴Gradle在Maven的儲存庫查詢所需的任何依賴關係。


8.3 依賴配置

一個配置是一個簡單的命名集的依賴。我們將把它們作為依賴的配置。

你可以用它們來定義專案的外部依賴。正如我們將在後面看到,他們還用定義專案的釋出。


Java外掛定義了一些標準配置。這些配置代表了Java外掛使用的類路徑。下面列出一些:

compile
編譯source code 需要的依賴。

runtime

在執行時所必需的產生classes的依賴關係。預設情況下,還包括編譯時的依賴。

testCompile
編譯該專案的測試原始碼 所需要的依賴。預設情況下,還包括編譯產生classes和編譯時的依賴。

testRuntime
執行測試需要的依賴。預設情況下,還包括編譯,執行和測試編譯依賴。



8.4 外部依賴

有多種型別的依賴,你可以定義。

外部依賴:依賴於當前構建工程之外的一些檔案,並且是儲存在倉庫中的,比如Maven的中央,或企業Maven或Ivy庫,或在本地檔案系統中的目錄。


例,外部依賴的定義
build.gradle:
dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}

外部依賴性,使用標識組,名稱和版本屬性。依賴哪種倉庫,組和版本是可選的。
定義外部依賴快捷形式看起來像“ 組:名稱:版本 ”。

例,外部依賴的快捷定義
build.gradle:
dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
}


8.5 倉庫

Gradle在一個庫中尋找外部依賴。儲存倉庫僅是一個檔案集合,由group、name、version組成。

Gradle瞭解幾種不同的儲存庫格式,如Maven和Ivy,和訪問資源庫的幾種不同的方法,如使用本地檔案系統或HTTP。

預設情況下,Gradle沒有定義任何資源庫。您需要定義至少一個,然後才能使用外部依賴。

例,Maven的中央儲存庫的使用
build.gradle:
repositories {
    mavenCentral()
}


例,遠端Maven倉庫的使用
build.gradle:
repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}


例,遠端Ivy目錄的用法
build.gradle:
repositories {
    ivy {
        url "http://repo.mycompany.com/repo"
    }

}

您也可以在本地檔案系統上的儲存庫。這適用於Maven和Ivy庫。

例如8.7。本地Ivy目錄的使用
build.gradle
repositories {
    ivy {
        // URL can refer to a local directory
        url "../local-repo"
    }
}

一個專案可以有多個儲存庫。Gradle將按指定的順序在每個庫中尋找依賴,最先在某個庫中找到就停止。




8.6 釋出 

依賴的配置也被用來發布檔案。

通常不需要特別告訴Gradle什麼需要釋出。但是,你需要告訴Gradle在哪裡釋出。您可以通過連線庫的uploadArchives任務。

這裡是釋出到遠端Ivy庫的例子:

例,釋出到Ivy庫

build.gradle:
uploadArchives {
    repositories {
        ivy {
            credentials {
                username "username"
                password "pw"
            }
            url "http://repo.mycompany.com"
        }
    }
}

現在,當你執行gradle uploadArchives,Gradle將建立並上傳你的Jar檔案。Gradle也會生成並上傳ivy.xml。


您也可以釋出到Maven倉庫。語法稍有不同。請注意,您還需要使用Maven外掛,以釋出到Maven倉庫。

這時,Gradle將生成並上傳pom.xml。


例,釋出到Maven倉庫
build.gradle:
apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}