標籤:
隨著資訊化的快速發展,IT項目變得越來越複雜,通常都是由多個子系統共同協作完成。對於這種多系統、多項目的情況,很多構建工具都已經提供了不錯的支援,像maven、ant。Gradle除了借鑒了ant或者maven的繼承的方式定義子項目,也提供了一種更為方便的集中配置的方式,大大減少了構建帶來的複雜度。除此之外,Gradle還提供了清晰的Project樹模型來映射多項目的組織圖。下面,讓我們瞭解一下如何使用Gradle構建多項目。
1.多項目的定義和結構
Mulit project 設定是gradle 約定的一種格式,如果你需要編譯某個項目之前,要先編譯另外一個項目的時候,就需要用到,結構如(來自於官方文檔):
MyProject/ | settings.gradle + app/ | build.gradle + libraries/ + lib1/ | build.gradle + lib2/ | build.gradle
你需要在你的workplace 目錄下面建立settings.gradle 的檔案,然後在裡面寫上:
include ‘:app‘, ‘:libraries:lib1‘, ‘:libraries:lib2‘
那樣,gradle mutil project 就設定完畢。
對於app project 如果需要應用libraries 目錄下的 lib1 ,你只需要在app project build.gradle 裡面的依賴中這麼寫:
1 |
compile project(‘:libraries:lib1‘) |
即可完成,寫完以後可以用gradle AndroidDependencies 來檢查依賴狀況。
需要注意的地方
123456789 |
buildscript { repositories { mavenCentral()} dependencies { classpath ‘com.android.tools.build:gradle:0.4‘ }} |
對於buildscript{} 在android gradle是用來預置外掛程式環境,一般不建議把依賴寫著裡面,推薦的依賴寫法是:
1234567891011121314151617181920212223 |
buildscript { repositories { mavenCentral()} dependencies { classpath ‘com.android.tools.build:gradle:0.4‘ }}repositories {//從中央庫裡面擷取依賴mavenCentral()//或者使用指定的本地maven 庫maven{url "file://F:/githubrepo/releases"}}dependencies {//應用格式: packageName:artifactId:versioncompile ‘com.google.android:support-v4:r13‘} |
使用Maven 管理庫
gradle 對於包的管理,支援filesystem,maven,ivy,這裡我重點說說如何利用maven 進行android 依賴包的管理
利用Gradle 發布本地maven 庫
對於如何打包一個jar 包並且發布到maven,這是java 的基本知識,這裡就不說了。
我們現在要學習的是,例如發布一個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 檔案
123456789101112131415161718 |
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 的依賴。
Android(java)學習筆記127:Android Studio建立工程中的build.gradle、settings.gradle