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