zoukankan      html  css  js  c++  java
  • 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,也就是没有生成成功,并且其他项目也无法导入。

  • 相关阅读:
    Python机器学习算法 — 关联规则(Apriori、FP-growth)
    Python数据存储 — MySQL数据库操作
    Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)
    七大查找算法(Python)
    react-redux源码学习
    理解webpack4.splitChunks
    redux、immutablejs和mobx性能对比(一)
    前端初探 Gitlab CI/CD
    React SPA 应用 hash 路由如何使用锚点
    理解webpack4.splitChunks之其余要点
  • 原文地址:https://www.cnblogs.com/mataiyuan/p/12822845.html
Copyright © 2011-2022 走看看