美文网首页
gralde -04-自定义插件流程

gralde -04-自定义插件流程

作者: lww文 | 来源:发表于2020-09-11 16:58 被阅读0次

我不太会 groovy 所以使用java  来制作 插件

1;插件一个java library

2:在java library 中的  添加 gradle  依赖 和 安卓插件的依赖

dependencies{

  implementation gradleApi();

  implementation'com.android.tools.build:gradle:4.0.1'

}

4:创建一个实体类 来定义我们在插件 需要  数据

====================================

public class xxxEntity {

  public Stringname;

  public  Stringpwd;

}

=========================

5:创建一个task (最自己的业务)

========================

public class xxxTask  extends DefaultTask{

xxxEntity   entity;

@Inject(构造函数 一定要加)

   public PGYUploadTask(xxxEntity  info) {

      this.entity= info;

    setGroup("taskGroupName");   // 设置task 的 组名

}

    @TaskAction

    public void dowrk() {

       // 做自己的业务

   例如: 上传apk    正常写java的 网络请求就行

    }

}

========================

5:插件一个 java 类 实现 implements Plugin<Project>  并实现 apply 方法

========================================

public class DingDingPluginimplements Plugin {

@Override

    public void apply(Project project) {

// "taskName",   1: 是在 需要使用 插件的 build.gradle 中需要使用的 配置的名称

// xxxEntity    

  xxxEntity   xxEntity= project.getExtensions().create("xxxConfig",    xxxEntity   .class);

   project.afterEvaluate(new Action() {    // 在项目配置完 后执行一个动作

@Override

            public void execute(final Project project) {

   //Project   可以获取项目的信息 

             创建task 并执行

// xxxTask" “”   task 的名称    xxxTask .class: 要执行的 task    xxEntity:  xxxTask 构造函数的参数  

...  可以传递多个参数

                xxxTask   sendTxt = project.getTasks().create("xxxTask", xxxTask .class,xxEntity,....);

//  如果是需要多个 task 执行不同的任务  创建taks的 历程和上面一样 

// 如果 多个 task 有关联  比如  A task  之执行完 在执行 B   可以使用 task 的 dependsOn();

      bTask.dependsOn(A task);  // dependsOn表示在自己之前先执行这个方法

======================  如你想在 app build 完 在执行task

AppExtension appExtension = project.getExtensions().getByType(AppExtension.class);

//        得到一个集合  默认获取  debug  和release

                appExtension.getApplicationVariants().all(new Action<ApplicationVariant>() {

                    @Override

                    public void execute(ApplicationVariant applicationVariant) {

//  获取apk build  完 之后的信息

                        applicationVariant.getOutputs().all(new Action<BaseVariantOutput>() { /

                            @Override

                            public void execute(BaseVariantOutput baseVariantOutput) {

//                                需要加固的  文件

                                File outputFile = baseVariantOutput.getOutputFile();

                                String name = baseVariantOutput.getName();

.//  执行 task 

 xxxTask   sendTxt = project.getTasks().create("xxxTask", xxxTask .class,xxEntity,..outputFile .);

                            }

                        });

                    }

                });

======================

}

========================================

6:配置 插件

在xx.properties 文件中配置 插件类的 全类型名

implementation-class=com.xxx.xxx.xxPlugin

7 上传插件

在  library 中的  添加 build.gradle 编写

111111=========上传本的仓库

applyplugin:'maven-publish'

publishing{

//    Publication

    publications{

        xxPlugin(MavenPublication){

            fromcomponents.java

            groupId"com.xxx"   //  组织名

            artifactId"xxx"    // 项目的唯一的标识符, 一般是项目名

            version"1.0.0"  

        }

    }

}

此时同步 一下 gradel   

=======================  需要 指定仓库 地址可以添加 

repositories{

    maven{

        //指定要上传的maven私服仓库1

        url="../repo"

        /*  url = "http://jenkins.maxrocky.com:8080/maven/content/repositories/thirdparty/"

          //认证用户和密码credentials {

username 'admin'

password 'maxrocky5721'

}*/

    }

}

然后 同步  上传

=============================

8: 使用 插件

8.1  在项目的 build.gradle 中    1:添加 仓库地址   2:添加插件依赖

8.2: 在 app的build.gralde 中使用

相关文章

网友评论

      本文标题:gralde -04-自定义插件流程

      本文链接:https://www.haomeiwen.com/subject/sdjpektx.html