Android Gradle - Gradle 自定义插件(Build Script 自定义插件、buildSrc 自定义插件、独立项目自定义插件)
一、Build Script 自定义插件1、基本介绍插件代码直接写在模块级build.gradle文件中逻辑非常简单且仅在该模块使用2、演示1具体实现在模块级build.gradle文件中定义插件classSimpleBuildScriptPluginimplementsPluginProject{Overridevoidapply(Project target){println这是 SimpleBuildScriptPlugin// 创建任务target.tasks.create(printMessage){doLast{println这是 SimpleBuildScriptPlugin 中的任务 printMessage}}target.tasks.create(printHello){doLast{println这是 SimpleBuildScriptPlugin 中的任务 printHello}}}}2使用插件在模块级build.gradle文件中使用插件apply plugin:SimpleBuildScriptPlugin3测试构建项目时输出结果如下# 输出结果 Configure project :gradleplugin 这是 SimpleBuildScriptPlugin在项目根目录下如下指令.\gradlew printMessage# 输出结果 Configure project :gradleplugin 这是 SimpleBuildScriptPlugin Task :gradleplugin:printMessage 这是 SimpleBuildScriptPlugin 中的任务 printMessage二、buildSrc 自定义插件1、基本介绍在项目根目录下创建 buildSrc 模块代码会自动编译并供所有模块使用逻辑较复杂但在单一工程内部多个模块复用2、演示1具体实现创建 buildSrc 模块在settings.gradle文件中删除如下内容include:buildSrc在buildSrc/src/main目录下创建 groovy 目录在buildSrc/src/main/groovy目录下创建并编辑com.my.buildsrc.SimpleBuildSrcPlugin.groovypackagecom.my.buildsrcimportorg.gradle.api.Pluginimportorg.gradle.api.ProjectclassSimpleBuildSrcPluginimplementsPluginProject{Overridevoidapply(Project target){println这是 SimpleBuildSrcPlugin// 添加扩展target.extensions.create(buildSrcConfig,BuildSrcExtension)// 创建任务target.tasks.create(buildSrcTask){doLast{defconfigtarget.buildSrcConfig printlnMessage:${config.message?:default message}}}}}classBuildSrcExtension{String message}在buildSrc/src/main目录下创建resources目录在buildSrc/src/main/resources目录下创建META-INF/gradle-plugins目录在buildSrc/src/main/resources/META-INF/gradle-plugins目录下创建并编辑com.my.buildsrc.propertiesimplementation-classcom.my.buildsrc.SimpleBuildSrcPlugin2使用插件在其他模块的模块级build.gradle文件中使用插件apply plugin:com.my.buildsrcbuildSrcConfig{messageHello World}3测试构建项目时输出结果如下# 输出结果 Configure project :gradleplugin 这是 SimpleBuildSrcPlugin在项目根目录下如下指令.\gradlew buildSrcTask# 输出结果 Configure project :gradleplugin 这是 SimpleBuildSrcPlugin Task :gradleplugin:buildSrcTask Message: Hello World三、独立项目自定义插件1、基本介绍创建一个完全独立的 Java/Kotlin Library 模块打包成 JAR 上传至本地或远程仓库可以在多个不同工程之间复用或准备开源2、演示1具体实现创建一个名为 MyPluginProject 的项目在项目中删除 app 模块创建一个名为 PluginModule 的模块在PluginModule/src/main/java目录下创建并编辑com.my.pluginmodule.SimplePlugin.javapublicclassSimplePluginimplementsPluginProject{Overridepublicvoidapply(Projecttarget){System.out.println(这是 SimplePlugin);// 创建任务Tasktasktarget.getTasks().create(simpleTask);task.doLast(t-{System.out.println(这是 simpleTask 任务);});}}在PluginModule/src/main/resources/META-INF/gradle-plugins目录下创建并编辑com.my.pluginmodule.propertiesimplementation-classcom.my.pluginmodule.SimplePlugin修改 PluginModule 的build.gradle文件plugins{idjava-libraryidmaven-publish}dependencies{implementationgradleApi()}java{sourceCompatibilityJavaVersion.VERSION_1_8 targetCompatibilityJavaVersion.VERSION_1_8}// 发布配置publishing{publications{plugin(MavenPublication){from components.java groupIdcom.myartifactIdpluginmoduleversion1.0.0}}repositories{mavenLocal()}}在项目根目录下如下指令发布插件./gradlew :pluginmodule:publishToMavenLocal2使用插件在项目级build.gradle文件中添加如下内容buildscript{repositories{mavenLocal()}dependencies{classpathcom.my:pluginmodule:1.0.0}}在模块级build.gradle文件中添加如下内容apply plugin:com.my.pluginmodule3测试构建项目时输出结果如下# 输出结果 Configure project :gradleplugin 这是 SimplePlugin在项目根目录下如下指令.\gradlew simpleTask# 输出结果 Configure project :gradleplugin 这是 SimplePlugin Task :gradleplugin:simpleTask 这是 simpleTask 任务
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2455113.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!