gradle插件开发如何读取安卓根目录的preperties

本来是想直接在build文件里配置变量如何直接apply插件的时候就能使用的,发现不行

public class PluginImpl implements Plugin<Project> {
    void apply(Project project) {
        project.extensions.create('pluginExt', PluginExtension)
        project.pluginExt.extensions.create('nestExt', PluginNestExtension)
        project.task('customTask', type: CustomTask)
    /*    project.task('testTask') << {
            println "Hello gradle plugin"
        }*/
    }
}

例如上面我扩展的两个变量


然后在在build文件中使用

pluginExt {
    param1 = 'app param1'
    param2 = 'app param2'
    nestExt{
        nestParam1='app nestParam1'
        nestParam2='app nestParam2'

    }
}


在TASK中得到

public class CustomTask  extends DefaultTask{
    @TaskAction
    void output() {
        println "param1 is ${project.pluginExt.param1}"
        println "param2 is ${project.pluginExt.param2}"
        println "param3 is ${project.pluginExt.param3}"
        println "nestparam1 is ${project.pluginExt.nestExt.nestParam1}"
        println "nestparam2 is ${project.pluginExt.nestExt.nestParam2}"
        println "nestparam3 is ${project.pluginExt.nestExt.nestParam3}"
    }

    @TaskAction
    void test(){

    }
}

这样我执行这个TASK的时候这些变量自然可以拿到,但是我希望在apply 插件的时候,就应该能拿到配置的这些变量对应的值,

实际测试发现不行,因为apply的时候值还没得到赋值,假如我把apply 插件放置在赋值语句后,构建就会失败,因为apply的时候才创建了那些变量,

先赋值的话那些变量实际还没有被创建,为了解决apply 插件的时候能够拿到配置的变量,我仿照听云,在项目的根目录下建立个proerties属性文件

,插件通过读取该属性文件获取相关配置信息,现在给出读取属性文件的代码


package com.haiziwang.bury
class ReadProperties {
    def initProperties() {
        //String filename = "D:\\test\\rkhy_bury.xlsx";
        String relativelyPath=System.getProperty("user.dir");// D:\androidprogram\rkapp\trunk
        println "property " + relativelyPath;
        String filename = relativelyPath+"\\kidbury.properties";
        def props = new java.util.Properties();
        props.load( new java.io.FileInputStream(filename));
        Enumeration<String> e = props.keys();
        /**
         * android_sdk_path=D:\\adt\\sdk\\platforms\\android-23\\android.jar
         bury_excel_path=D:\\test\\rkhy_bury.xlsx
         */
        String val1 = props.get("import_path");
        String val2 = props.get("bury_excel_path");
        String val3 = props.get("package_name");
        String val4 = props.get("import_class");
        if(val1 != null){
            String[] ss = val1.split(";")
            BuryConfig.import_path=ss;
        }

        if(val4 != null){
            String[] ss = val4.split(";")
            BuryConfig.import_class=ss;
        }

        BuryConfig.bury_excel_path=val2;
        BuryConfig.package_name=val3;
        println "importpath: "+ val1  + " excel: " +  BuryConfig.bury_excel_path+"package:"+ BuryConfig.package_name+"import_class:"+val4;
      /*  while (e.hasMoreElements())
        {
            String key = e.nextElement();
            String val = props.get(key);
            println "property " + key + " value: " + val;
        }*/
    }
   static void main(args) {
        def app = new ReadProperties();
        app.initProperties();
    }
}

属性文件内容如下

bury_excel_path=D:\\test\\rkhy_bury.xlsx
package_name=com\\haiziwang\\customapplication
import_class=com.haiziwang.customapplication.report.api.ReportPoint;com.haiziwang.customapplication.report.api.ReportClient
import_path=D:\\adt\\sdk\\platforms\\android-23\\android.jar


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值