1. 程式人生 > >gradle的使用,依賴管理

gradle的使用,依賴管理

引用依賴
對Gradle不是很親切的朋友可以先認識以下Gradle
Gradle基礎–認識Gradle

1. 什麼是依賴管理

依賴管理可以分為兩部分:一是依賴,即專案構建或執行時所需要的一些檔案;二是釋出,即構建完成後上傳到某個地方。

1.1 依賴

大部分的專案都需要第三方庫類或專案檔案,這些檔案就是專案的依賴了。比如JDBC的jar包,junit的jar包等等。Gradle需要你告訴它工程的依賴是什麼,在哪裡可以找到,然後它幫你加入構建。在依賴中,可能需要去遠端倉庫下載檔案,如maven或Ivy,本地倉庫,甚至是另一個專案,這個過程我們稱之為依賴解決。
另外,我們所依賴的檔案自身可能也有依賴,當Gradle進行構建的時候,它也會去找這些依賴,這個過程我們稱之為依賴傳遞。

1.2 釋出

大部分的專案構建的主要目的是生成一些專案之外使用的檔案。比如生成jar包,包括文件、原始碼,然後打包釋出出去。這些檔案構成了專案的輸出內容,並由你決定要對它自己做。比如複製到某個目錄,上傳到maven或Ivy倉庫,在其他專案中使用。這些都可以稱之為釋出。

2.依賴宣告

compile ‘com.google.code.gson:gson:2.3.1’

apply plugin: 'android'  

repositories {  
    mavenCentral()  
}  

dependencies {  
    compile group
: 'com.google.code.gson', name: 'gson', version: '2.3.1' }

這裡repositories裡的內容聲明瞭maven中央倉庫,這是Gradle去找依賴的地方。接著是定義了一個依賴解析json所需要的包。
這裡先簡單解釋,後面的筆記會有更詳細的描述。

3、依賴引用

3.1本地依賴

gradle 作為構建工具,能夠很方便的使用本地jar包,以下為使用的程式碼塊。

dependencies {
    //單檔案依賴
    compile files('libs/android-support-v4.jar')
    //某個資料夾下面全部依賴
compile fileTree(dir: 'libs', include: '*.jar') }

3.2外部依賴

它指的是依賴於一些如在外部構建,存放於類似maven的倉庫,或儲存在本地檔案系統的某個目錄中的檔案。

定義外部依賴包含group, name和version這三個屬性。根據選取的倉庫不同,group和version可能不需要。

dependencies {  
    compile group: 'com.google.code.gson', name: 'gson', version: '2.3.1'  
}

除了這種寫法之外,還有一種更簡潔的寫法,就是把這三個屬性的值拼接起來,寫成這樣:”group:name:version”。如下所示:

dependencies {  
    compile 'com.google.code.gson:gson:2.3.1'
} 

3.3遠端依賴

Gradle 是在一個倉庫裡查詢外部依賴的。倉庫會按照group,name和version的規則來存放檔案。Gradle支援不同的倉庫格式,如maven,Ivy等。並且提供了多種訪問倉庫的方式,比如使用本地檔案系統或HTTP。
這裡需要簡單的介紹一下maven的概念。在這裡大家先主要認識一下跟大家接觸比較多的
mavenCentral()。初識maven倉庫
下面是使用maven庫的例子

repositories {
    //從中央庫裡面獲取依賴
    mavenCentral()
    //或者使用指定的本地maven 庫
    maven{
        url "file://F:/githubrepo/releases"
    }
    //或者使用指定的遠端maven庫
    maven{
        url "https://github.com/Jackwaiting/BluetoothLibrary_maven"
    }
}

dependencies {
    //應用格式: packageName:artifactId:version
    compile 'com.google.android:support-v4:r13'
}

android {

}

4、使用Maven 管理庫

gradle 對於包的管理,支援filesystem,maven,ivy,這裡我重點說說如何利用maven 進行android 依賴包的管理

利用Gradle 釋出本地maven 庫

我們現在要學習的是,例如釋出一個android library 包。

在過去,android library並沒有一個很好的包管理方式,簡單來說,在gradle出現以前,官方並沒有一種用於管理android library 依賴包的方式,一般我們都是直接下載別人的android library project 原始碼進行整合,而對於第三方的android-maven-plugin 用的是apklib 格式。

而現在,官方終於推出一種android library的打包格式,副檔名為.aar。目前android gradle外掛並不支援本地直接使用.aar檔案,不過,支援包管理庫的引用方式,下面,我為大家說一下,怎麼對android library 釋出使用。

打包android library

對android library 進行打包直接在library專案下面使用gradle build 即可,然後,你就會在 build/libs 目錄下看到兩個*.aar檔案,一個debug包用的,一個是release 下用的,看個人需求使用,這裡我們用的是release 版本的 .aar 檔案。

釋出指令碼

android library project 目錄的 build/libs 下建立一個build.gradle 檔案

apply plugin: 'maven'

group = 'com.youxiachai'

artifacts {
    //當前aar 檔名
    archives file('Gradlelib.aar')
}

uploadArchives {
      repositories {
        mavenDeployer {
            repository(url: "file://F:/githubrepo/releases")
            pom.version  = 'r1'
            pom.artifactId = 'gradletest'
        }
    }
}

gradle uploadArchives即可完成包的釋出。

完成以上兩步就可以直接用maven 引用jar的依賴那樣,引用android library 的依賴。