网站编辑怎么赚钱,wordpress4.9.1,电子商务平台经营者有哪些,专题网站设计之前介绍了Gradle插件的开发#xff0c;这次会对功能进行一部分拓展#xff0c;建议没有读过第一篇文章的朋友#xff0c;先看一下Gradle插件学习笔记#xff08;一#xff09; Extension 之前的文章提到过#xff0c;如何编写一个插件#xff0c;但是并不能通过外面传递…之前介绍了Gradle插件的开发这次会对功能进行一部分拓展建议没有读过第一篇文章的朋友先看一下Gradle插件学习笔记一 Extension 之前的文章提到过如何编写一个插件但是并不能通过外面传递参数进来如果想使用一些自定义的参数可以使用Extension我们可以再建立一个MyExtension.groovy class MyExtension {def aaa;def bbb;}
复制代码然后找到插件类(可以参考上一篇文章) public class TestPlugin implements PluginProject {Overridevoid apply(Project project) {project.extensions.create(deep, MyExtension)project.afterEvaluate {MyExtension extension project[deep];String a extension.aaaString b extension.bbbprintln(deep:${a},${b})}}
}
复制代码Project本身是支持拓展的所以提供了create方法project.extensions.create(deep, MyExtension)这句代码的意思是将我们的自定义的类作为Project的一个属性值key是deep。 这里在普及一个小知识项目中gradle执行的时候会先解析setting.gradle,然后是build.gradle,如果想在解析build.gradle之前做点事可以使用project.beforeEvaluate如果想在解析build.gradle之后做点事可以project.afterEvaluate。 所以我们在解析完build.gradle之后在访问project中我们设置的属性即可得到build.gradle中设入的值。 来看个例子(其中hhh就是我们写的插件名字这个上篇文章提到过) apply plugin: hhh
deep{aaathis is abbbthis is b
}
复制代码执行任务打印 android 通过上面的例子我想到了正经的android工程不是也是这样配置的吗我们可以测试一下。 都知道android工程中的project样式如下 android {compileSdkVersion 26buildToolsVersion 26.0.3defaultConfig {applicationId deep.com.testgroovyminSdkVersion 14targetSdkVersion 26versionCode 1versionName 1.0}
}复制代码这些不都是project的一个拓展类吗我们可以测试一下修改插件 Overridevoid apply(Project project) {project.afterEvaluate {println(包名project[android][defaultConfig].applicationId)}
复制代码我取project下的android,然后再取android下的defaultConfig就可以得到包名执行一下看看 果然可以获取包名,同理在打包的时候可以拿到更多的设置信息。 总结 好了今天有点时间先写这么多吧下篇文章具体说一下如何干预android编译 也欢迎关注我的公众号之后会推荐更多好用的组件库。