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

浙公网安备 33010602011771号