gradle:自定義任務task


1:建立一個AS工程,建立目錄結構如圖

 

 

 2:在buildSrc文件夾下面,建立兩個.groovy文件,分別為ProjectVersion.groovy  和 ReleaseVersionTask.groovy

其中ReleaseVersionTask.groovy代碼為:

package com.groovytest;
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction

class ReleaseVersionTask extends DefaultTask{
    @Input Boolean release
    @OutputFile File destFile

    ReleaseVersionTask(){
        group='versioning'
        description='Makes project a release version.'
    }

    @TaskAction
    void start(){
        project.version.release=true;
        ant.propertyfile(file:destFile){
            entry(key:'release',type:'string',operation:'=',value: 'true')
        }
    }
}

ProjectVersion.groovy代碼為:

package com.groovytest;

class ProjectVersion{
    Integer major
    Integer minor
    Boolean release

    ProjectVersion(Integer major, Integer minor){
        this.major=major
        this.minor=minor
        this.release=Boolean.FALSE
    }


    ProjectVersion(Integer major, Integer minor, Boolean release){
        this.major=major
        this.minor=minor
        this.release=release
    }

    @Override
    String toString(){
        "$major.$minor${release?'': '-SNAPSHOT'}"
    }

}

 3: 在buildSrc下面建立一個build.gradle文件

 

 build.gradle內容為:

apply plugin: 'groovy'
apply plugin: 'maven'

version = '1.0'
group = 'com.groovytest'
archivesBaseName = 'releaseVersionTask'

repositories {
    mavenCentral()
}

dependencies {
    // 編譯的時候我們需要使用Gradle中的API
    compile gradleApi()
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file:D:\\Android_Develop\\gradle_project\\local_maven")
        }
    }
}

  其中"file:D:\\Android_Develop\\gradle_project\\local_maven"為你自定義的本地倉庫地址:

4:根目錄下面的build.gradle內容如下:

buildscript {

    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

  5:setting.gradle內容如下:

 

 

6:在根目錄下面執行gradle uploadArchives

 

7:查看本地文件夾下面有了相應的jar文件

 

 8:在其他工程中使用這個Jar文件,AS新建一個工程,可以選擇空項目,目錄配置如下:

 

 9:在根目錄下面的build.gradle如下:

 

 build.gradle內的代碼如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
        /*
        使用本地倉庫
        */
        maven {
            url 'file:D:\\Android_Develop\\gradle_project\\local_maven'
        }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        //依賴本地jar
        classpath 'com.groovytest:releaseVersionTask:1.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url 'file://D:\\Android_Develop\\gradle_project\\local_maven'
        }


    }


}
task clean(type: Delete) {
    delete rootProject.buildDir
}

  10:現在可以在build.gradle里面使用了,import com.groovytest;是可以找的到的,如圖,如果配置不對是找不到的。

 

 

11:如果我們想在app下面的build.gradle 以及.java里面使用,那我們要配置app下面的build.gradle

 

 12:首先我們配置app下面的 build.gradle,最關鍵的就是設置dependencies:如圖

 

 13:然后我們就可以在build.gradle 以及test.java下面使用了

 

 

 

 

注意:一開始,我想着在根目錄下面的build.gradle來生成jar,也就是說一開始沒有下圖的1文件,只有2文件,並且2文件里面設置upload代碼,這個時候編譯也能通過,但是呢生成的.jar是不能用的,如圖

只有1kb,也就是沒有生成成功,並且其他項目也無法導入。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM