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 的依賴。