貌似掉线 2020-05-03
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,也就是没有生成成功,并且其他项目也无法导入。
