Gradle插件使用過程記錄

Android中基於Gradle進行編譯打包的過程,下面記錄一下如何進行Gradle插件開發的過程:html

首先在項目中新建的一個名爲buildSrc的module,爲何叫這個名字請看官方文檔。而後將Java文件夾以及res文件夾刪除,新建groovy文件夾以及resource文件夾:java

在groovy文件夾下新建package的目錄,在我這依次是com/lin/plugin,而後在resource文件夾下創建META-INF/gradle-plugins兩個文件夾,在文件夾中添加包名.properties文件,其內部代碼以下:android

implementation-class=com.lin.plugin.TestPlugin

TestPlugin.groovy的代碼以下:app

class TestPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        println('--------------------------')
        println('this is a buildSrc plugin...')
        println('--------------------------')
    }
}

修改buildSrc的build.gradle文件:maven

//添加groovy和maven插件
apply plugin: 'groovy'
apply plugin: 'maven'

//本地發佈插件
uploadArchives {
    repositories {
        mavenDeployer {//用於發佈本地maven
            pom.groupId = "com.lin.plugin"
            pom.artifactId = "test"
            pom.version = "0.0.1"
            repository(url: uri('../repo'))
        }
    }
}
task sourcesJar(type: Jar) {
    from project.sourceSets.main.groovy.srcDirs
    classifier = 'sources'
}
task javadocJar(type: Jar, dependsOn: groovydoc) {
    classifier = 'javadoc'
    from groovydoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}
//插件依賴
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile gradleApi()
    compile localGroovy()
}

而後在項目根目錄的build.gradle中添加本地maven庫,目的是爲了可以在主工程中使用咱們建立的插件:ide

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven{
            url uri('./repo')//本地maven,用於發佈測試插件
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.lin.plugin:test:0.0.1'//本地maven,依照上面uploadArchives內的命名組裝
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

進行編譯,編譯完成後在插件的gradle命令中能夠看到多出了以下命令:測試

雙擊該命令用於構建插件庫,構建完成後可以在項目根目錄下看見生成問maven文件:gradle

而後將插件導入咱們的主工程build.gradle當中ui

apply plugin: 'com.lin.plugin'

運行assemble命令,構建項目,能夠run窗口看到TestPlugin的執行:this

經過該方式就編譯好了一個Plugin插件了,若是項目須要針對apk的編譯打包流程作一些處理的話,就能夠使用上述的插件進行hook的操做了,關於更多的gradle使用方法,移步官網閱讀便可。

相關文章
相關標籤/搜索