这里面简单的介绍一下gradle插件的编写。
自定义gradle插件
我们编写的gradle脚本一般是放在build.gradle文件中。所以首先创建一下build.gradle文件,下面的例子都是在此文件中。
一、简单的gradle插件
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') {
doLast {
println 'Hello from the GreetingPlugin'
}
}
}
}
apply plugin: GreetingPlugin
运行结果:
二、 编写可配置的插件
class GreetingPluginExtension {
String message
String greeter
} class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
def extension = project.extensions.create('greeting', GreetingPluginExtension)
project.task('hello') {
doLast {
println "${extension.message} from ${extension.greeter}"
}
}
}
}
apply plugin: GreetingPlugin greeting {
message = 'Hello'
greeter = 'huhx'
}
运行结果:
三、编写与文件交互的插件
class GreetingToFileTask extends DefaultTask { def destination File getDestination() {
project.file(destination)
} @TaskAction
def greet() {
def file = getDestination()
file.parentFile.mkdirs()
file.write 'Hello!'
}
} task greet(type: GreetingToFileTask) {
destination = { project.greetingFile }
} task sayGreeting(dependsOn: greet) {
doLast {
println file(greetingFile).text
}
} ext.greetingFile = "$buildDir/hello.txt"
运行结果:并且在2018-12-28/build目录下面生成一个hello.txt,里面的内容是Hello。
四、编写带有拓展功能的插件
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
def extension = project.extensions.create('greeting', GreetingPluginExtension, project)
project.tasks.create('hello', Greeting) {
message = extension.message
outputFiles = extension.outputFiles
}
}
} class GreetingPluginExtension {
final Property<String> message
final ConfigurableFileCollection outputFiles GreetingPluginExtension(Project project) {
message = project.objects.property(String)
message.set('Hello from GreetingPlugin')
outputFiles = project.layout.configurableFiles()
} void setOutputFiles(FileCollection outputFiles) {
this.outputFiles.setFrom(outputFiles)
}
} class Greeting extends DefaultTask {
final Property<String> message = project.objects.property(String)
final ConfigurableFileCollection outputFiles = project.layout.configurableFiles() void setOutputFiles(FileCollection outputFiles) {
this.outputFiles.setFrom(outputFiles)
} @TaskAction
void printMessage() {
outputFiles.each {
logger.quiet "Writing message 'Hi from Gradle' to file"
it.text = message.get()
}
}
} apply plugin: GreetingPlugin greeting {
message = 'Hi from Gradle'
outputFiles = layout.files('a.txt', 'b.txt')
}
运行结果:并且在2018-12-28目录下面生成a.txt和b.txt,文件的内容均为:Hi from Gradle
友情链接
java基础---->自定义gradle的插件的更多相关文章
-
AS 自定义 Gradle plugin 插件 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
-
java基础|自定义java线程池
线程池创建的参数 在创建线程的各种方式中我们有讲到过通过创建线程池来完成异步操作,但实际上jdk提供的Executors来创建线程池都还有些缺陷,线程池有以下几个参数: 代码节选自源码ThreadPo ...
-
Gradle的构建过程都不会?带你全面了解Android如何自定义Gradle 插件
目前 Android 工程的默认构建工具为 Gradle,我们在构建 APK 的时候往往会执行 ./gradlew assembleDebug 这样的命令.. 那么这个命令到底代表着什么含义呢?命令的 ...
-
Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
-
Java基础-类加载机制与自定义类Java类加载器(ClassLoader)
Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...
-
Java基础语法(自定义类、ArrayList集合)
Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...
-
Java基础__Java中自定义集合类
Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...
-
VS Code Java 更新 – 全新Gradle for Java插件,更方便的代码操作, 1.0 语言支持发布
大家好,欢迎来到 9 月版的 Visual Studio Code Java 更新.在这篇文章中,我们将分享我们最新的Gradle插件,更加方便的代码操作(Getter/Setter等等),以及最近的 ...
-
Java基础学习总结(70)——开发Java项目常用的工具汇总
要想全面了解java开发工具,我们首先需要先了解一下java程序的开发过程,通过这个过程我们能够了解到java开发都需要用到那些工具. 首先我们先了解完整项目开发过程,如图所示: 从上图中我们能看到一 ...
随机推荐
-
iOS 设置不同的字体颜色
//设置不同字体颜色 -(void)fuwenbenLabel:(UILabel *)labell FontNumber:(UIFont *)font AndRange:(NSRange)range ...
-
git代码冲突解决
1.git fetch 跟git pull差别是前者不会和本地直接merge code,而后者会,所以git fetch更安全 git fetch origin master:tmpgit dif ...
-
SQL复习
1.select SELECT LastName,FirstName FROM Persons SELECT * FROM Persons 2.distinct SELECT DISTINCT Com ...
-
40免费的 jQuery &; CSS3 图片热点特效
jQuery CSS3 形象悬停效果可能是一个优秀的网站项目中添加的效果.这个特殊的收集是大约50个 jQuery CSS3 形象徘徊影响最近出版的.这些图像悬停效果可以作为一个有效的和创造性的方式添 ...
-
查看linux虚拟机ssh服务是否开启
知识准备: 1.ssh和sshd的区别: 2.ssh服务进程默认地址:/etc/init.d/ssh 查看ssh服务是否开启 service ssh status 或者: /etc/init.d/ss ...
-
在Java SE中使用Hibernate处理数据
如今,Hibernate正在迅速成为非常流行的(如果不是最流行的)J2EE O/R映射程序/数据集成框架.它为开发人员提供了处理企业中的关系数据库的整洁.简明且强大的工具.但如果外部需要访问这些已被包 ...
-
会议室预订系统(meeting room booking system)
一.mrbs mrbs:(meeting room booking system) 二.效果 三.models from django.db import models # Create your ...
-
word之常用功能
0.word区域:标题栏.快速访问工具栏.功能区.功能按钮.导航窗口.编辑区.水平垂直滑动条.状态栏 1.更改office主题.文件---帐户---office主题.(传统白色.浅灰色.深灰色) 2. ...
-
spring ico
代码非常简单.如果缺少jar包将导致报错. 需要5个spring jar包和1个logging jar,否则报错. org.springframework.asm.jarorg.springframe ...
-
Oracle学习笔记之二,Oracle 11g体系结构
Oracle 11g体系结构概述 实例(Instance),是指一组Oracle后台进程以及在服务器中分配的共享内存区域: 数据库(Database),是由基于磁盘的数据文件.控制文件.日志文件.参数 ...