Android與Gradle(二):外掛打包上傳到Maven伺服器

為什麼不問問神奇的滑稽呢發表於2017-12-21

前文說到了簡單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的任務:

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私服”,很簡單,我就不細說了。


本篇文章僅代表個人觀點,難免會有疏漏或者謬誤之處,歡迎批評指正。

系列

  1. Gradle外掛開發
  2. 外掛打包上傳到Maven伺服器

相關文章