前文說到了簡單Gradle外掛的建立方法,如果你還沒有看過,建議你先行閱讀一下: Android與Gradle(一):Gradle外掛開發
本文將說明單獨的外掛“專案”的建立方法,以及如何將外掛打包上傳到Maven伺服器,本文的內容相對就少得多了。
獨立外掛專案的建立
建立Module
與前文所提到的建立buildSrc目錄的步驟幾乎完全一樣,你可以新建任意名字的資料夾作為外掛專案(這裡可以看作當前Android專案的Module)的目錄,這裡我就命名為cog-gradle-plugin吧:
與前文的差異就是,這裡在main目錄下多了一個java目錄,而且跟groovy目錄一樣,同樣建了一個包com.peceoqicka.cog。因為在這裡gradle外掛是使用groovy混合java開發的,至於groovy中怎麼呼叫java,一句話說就是在java中怎麼呼叫java,groovy就可以怎麼呼叫,很方便不是嗎。
記住一個關鍵的步驟,一定要在settings.gradle檔案裡新增這個Module的引用,否則無法識別。
include ':app', ':cog-gradle-plugin'
複製程式碼
上傳到Maven
按照上述步驟建立好專案並除錯好外掛程式碼之後,就可以上傳了。在build.gradle檔案中新增外掛:
apply plugin: 'maven'
複製程式碼
並且定義好專案的唯一ID(group)和版本號(version):
group = 'com.peceoqicka.cog'
version = '1.0.2'
複製程式碼
新增上傳的task:
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('http://localhost:8081/repository/maven-releases/')) {
authentication(userName: 'admin', password: 'admin123')
}
}
}
}
複製程式碼
最終build.gradle檔案的內容應該跟如下的大致相同:
apply plugin: 'groovy'
apply plugin: 'maven'
group = 'com.peceoqicka.cog'
version = '1.0.2'
dependencies {
//...外掛中用到的其他庫
compile gradleApi()
compile localGroovy()
}
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('http://localhost:8081/repository/maven-releases/')) {
authentication(userName: 'admin', password: 'admin123')
}
}
}
}
複製程式碼
注意下方的mavenDeployer中的程式碼,repository中定義了maven伺服器的地址,這裡使用的是本地的Maven伺服器地址,並新增了認證引數(帳號和密碼)。
那麼,上傳到Maven伺服器的準備工作就已經完成了。接下來開啟Android Studio右邊的Gradle皮膚,可以看到一個叫做upload的任務:
雙擊執行這個任務,這時候gradle就會自動執行打包上傳,等待上傳完成即可。 上傳到Maven伺服器的庫如何在實際專案中引用,很簡單。對於任意一個本地新建的Android專案,在專案的build.gradle中修改程式碼:
buildscript {
repositories {
jcenter()
mavenCentral()
//新增對本地Maven伺服器地址的引用
maven{
url uri('http://localhost:8081/repository/maven-releases/')
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
//新增外掛引用
classpath 'com.peceoqicka.cog:cog-gradle-plugin:1.0.2'
}
}
複製程式碼
新增的程式碼都有註釋,很簡單,首先新增本地Maven伺服器的地址,然後再新增外掛專案的引用,引用的名稱規則是“group名:專案名:版本號”。然後還有一個關鍵步驟,啟用外掛,在app的build.gradle中新增:
apply plugin: 'com.peceoqicka.cog'
複製程式碼
那麼本文要說的內容就這麼多了,至於本地的Maven伺服器如何搭建,請自行查閱資料“用NEXUS搭建Maven私服”,很簡單,我就不細說了。
本篇文章僅代表個人觀點,難免會有疏漏或者謬誤之處,歡迎批評指正。