增加自己的自定义plugin,使用的是最简单的那种, 在项目下创建一个buildSrc Java Module,然后在apply哪里改:
// 引入对应的plugin
apply plugin: 'groovy'
apply plugin: 'java'
dependencies {
implementation gradleApi()// 引入gradle api
implementation localGroovy()// 引入groovy
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
sourceSets {// 源码地址
main {
groovy {
srcDir 'src/main/groovy'
}
java {
srcDir "src/main/java"
}
resources {
srcDir 'src/main/resources'
}
}
}
sourceCompatibility = "7"
targetCompatibility = "7"
这个就是完整的gradle文件配置,通过这个配置之后,在添加对应的plugin以及task即可,
public class FirstPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
// 新建一个名为hello的task,实际调用为MyTest
project.getTasks().create("hello", MyTest.class, new Action<MyTest>() {
@Override
public void execute(MyTest myTest) {
// 这里调用task
myTest.str = "xuepanjie";
myTest.say();
myTest.str = "hello";
}
});
}
} // plugin 代码
public class MyTest extends DefaultTask {
public String str;
@TaskAction
public void say(){
System.out.print(str);
}
}// task代码
这时如果在App内的plugin apply对应的first plugin,那么在执行assembleDebug的时候就会调用这个新增的Plugin了,这里可以增加自己的task也可以增加自己的transform,当然也可以不在这里增加buildSrc这种方式,而改成独立的moudle然后发布之后在目标app去依赖即可,类似booster这种方式。
即使这种简单的加法也遇到问题,问题是在新建module的时候选择了library,应该选择java那种形式然后修改对应的build文件才行。
借鉴:https://guides.gradle.org/writing-gradle-plugins/