当前位置: 首页 > news >正文

网站建设政府软文范例100字以内

网站建设政府,软文范例100字以内,有哪些做动图网站,湖南网站设计亮点文章目的本章中我们将会学习到如何自定义任务(Task)的类型,了解Gradle是怎么增强任务的功能的。需要准备一个熟悉的IDE开发工具JDK 7及以上Gradle 3.2以上Gradle的两种任务类型在上一章中(http://www.jianshu.com/p/a41769bf5118), 我们介绍了任务(Task)…

文章目的

本章中我们将会学习到如何自定义任务(Task)的类型,了解Gradle是怎么增强任务的功能的。

需要准备

一个熟悉的IDE开发工具

JDK 7及以上

Gradle 3.2以上

Gradle的两种任务类型

在上一章中(http://www.jianshu.com/p/a41769bf5118), 我们介绍了任务(Task)的一些高级用法,知道了Gradle对任务的功能增强很多,那么它是具体如何做到的呢?在揭晓答案之前,我们先来看看Gradle都支持哪两种类型的任务吧。

第一种为简单任务类型,就是我们在之前一篇文章中介绍的(http://www.jianshu.com/p/a7b947c86650), 它的行为是定义在一个动作闭包方法中的, 这种简单类型的任务适合在一个编译脚本中实现一种功能。而第二种为增强的任务类型,它的行为被提前构建在了任务里,只是提供一些配置属性让我们去设置,这种任务可以在不的地方或不同的编译脚本中被重复使用,它正是我们上一章中介绍的任务类型。

这种高级的增强的任务类型是通过定义一个任务类来实现的,在Gradle中我们也可以自定义自己的增强类型类,我们可以使用多种语言来实现,比如java、scala等。不过Gradle本身是使用Groovy语言实现的,所以我在这里选择使用Groovy语言来实现。

实现自定义的任务类型

首先有三种方式来编写我们的任务类

在我们构建项目的build.gradle脚本中直接编写,这种方式的好处是任务类自动被编译加载到我们的classpath中,我们不需要额外做任何的事情,但是它有很明显的局限性,就是除了在包括它的脚本外别的地方无法复用。

在我们构建项目的rootProjectDir/buildSrc/src/main/groovy 目录下编写,Gradle会自动编译到当前项目的classpath中,该项目下所有编译脚本都可以使用,但是除了当前项目之外的都无法复用。

以单独的工程方式编写,这个工程最终编译发布为一个JAR包,它可以在多个项目或不同的团队中共享使用。

然后我们先使用第一种方式编写一个简单的自定义任务类,而该自定义任务类是继承自DefaultTask的,同时为它添加一个行为方法,该方法需要使用TaskAction进行标注,这样Gradle就会在任务执行的时候默认调用它,其build.gradle中代码如下所示:

task hello(type: GreetingTask)

class GreetingTask extends DefaultTask {

@TaskAction

def greet() {

println 'hello from GreetingTask'

}

}

执行命令gradle -q hello结果如下:

> gradle -q hello

hello from GreetingTask

当然我们可以为我们自定义的任务类添加属性,并且在使用的时候设置该属性值,其build.gradle中代码如下:

// 使用默认的属性值

task hello(type: GreetingTask)

// 自定义设置的属性值

task greeting(type: GreetingTask) {

greeting = 'greetings from GreetingTask'

}

class GreetingTask extends DefaultTask {

String greeting = 'hello from GreetingTask'

@TaskAction

def greet() {

println greeting

}

}

执行命令gradle -q hello greeting结果如下:

> gradle -q hello greeting

hello from GreetingTask

greetings from GreetingTask

以单独工程方式实现自定义任务类

我们使用IDEA开发工具创建一个Groovy的工程,然后在它的build.gradle文件中使用Groovy plugin,并且添加相关的依赖,代码如下:

apply plugin: 'groovy'

dependencies {

compile gradleApi()

compile localGroovy()

}

接着创建一个Groovy类,其文件为src/main/groovy/org/gradle/GreetingTask.groovy,相关代码如下:

package org.gradle

import org.gradle.api.DefaultTask

import org.gradle.api.tasks.TaskAction

class GreetingTask extends DefaultTask {

String greeting = 'hello from GreetingTask'

@TaskAction

def greet() {

println greeting

}

}

我们可以使用maven-publish插件先发布到本地,这样我们机器上的其他工程就能在指定目录下找到我们的任务类了,修改build.gradle中代码如下:

apply plugin: 'groovy'

apply plugin: 'maven-publish'

dependencies {

compile gradleApi()

compile localGroovy()

}

publishing{

publications {

mavenJava(MavenPublication) {

from components.java

groupId 'org.gradle'

artifactId 'customPlugin'

version '1.0-SNAPSHOT'

}

}

repositories{

maven {

// change to point to your repo, e.g. http://my.org/repo

url "../repo"

}

}

}

在IDEA工具中直接运行publish任务,就能完成发布工作,并在工程的上一级目录下生成发布包,具体操作和结果如下图所示:

6edd1022a94f?from=singlemessage

图一 运行publish发布工程

6edd1022a94f?from=singlemessage

图二 生布后的本地仓库目录

最后在另外一个工程中使用该任务类

使用IDEA开发工具新创建一个Gradle工程,在该工程中将使用我们上面单独定义的任务类,首先我们需要使用buildscript { } 块来使类添加到编译脚本的classpath中,下面build.gradle中的代码展示了如果加载本地仓库的任务类:

buildscript {

repositories {

maven {

url uri('../repo')

}

}

dependencies {

classpath group: 'org.gradle', name: 'customPlugin',

version: '1.0-SNAPSHOT'

}

}

task greeting(type: org.gradle.GreetingTask) {

greeting = 'another project working!'

}

执行命令gradle -q greeting的结果如下:

> gradle -q greeting

another project working!

小结

本章通过实现了一个自定义任务类,让我们了解到了Gradle是如何增强任务功能的,下一节中我将继续介绍如何实现自定义的插件,自定义任务类一般是与自定义插件一起使用的。如果感觉兴趣的同学请关注我,我和朋友的新书《分布式服务架构:原理、设计与实战》也正式登陆京东了,如果有需要的可以直购买,里面有很多平时的工作经验分享。

参加技术分享

6edd1022a94f?from=singlemessage

《分布式服务架构:原理、设计与实战》

6edd1022a94f?from=singlemessage

杨彪的简书博客

6edd1022a94f?from=singlemessage

云时代架构公众号

http://www.lbrq.cn/news/2615725.html

相关文章:

  • flash as3 网站模板升华网络推广软件
  • wordpress 消息队列杭州seo排名公司
  • 上海seo推广价格seo 优化是什么
  • 深圳b2b网站开发公司南宁关键词优化服务
  • 个人网站什么语言做吸引人的软文
  • 旅游网站需求分析怎么做的有哪些营销推广方式
  • 网站建设需竞价托管外包
  • 建站助手官网百度广告开户
  • 视频背景做网站背景网络营销案例2022
  • 小程序源码破解seo就业前景如何
  • 美丽乡村 网站建设企业网址怎么注册
  • 微信怎么做网站推广自助建站平台源码
  • 一流的网站建设流程图宁波网站制作与推广价格
  • 网站seo诊断书杭州seo排名费用
  • 网站建设自助建站云建站cpa推广平台
  • 制作网页和做网站是一个意思吗企业网页
  • 建站软件有哪些功能设计本网站
  • 镇江教育云平台网站建设关键词优化的策略
  • 免费行情软件app网站大全下载免费入口上海短视频推广
  • 网站色调选择北京搜索引擎关键词优化
  • 宝鸡做网站电话网络营销是什么专业类别
  • 域名空间商seo初学教程
  • 广东科技网站建设百度推广技巧方法
  • 网站建设的经济效益怎么做一个公司网站
  • 佛山智家人网站宁波seo外包优化公司
  • 昆明公司做网站保定网站制作
  • 网站开发需要什么开发工具外汇seo公司
  • 信用中国 网站 建设方案百度退推广费是真的吗
  • b2b网站做推广什么网站好seo排名的影响因素有哪些
  • 襄阳教育云平台网站建设企业培训机构
  • 嵌入式开发学习———Linux环境下IO进程线程学习(五)
  • 西门子PLC基础指令6:读取时钟指令、设置时钟指令、使能含义与注意
  • nordic通过j-link rtt viewer打印日志
  • uniapp基础(五)调试与错误
  • 配置Mybatis环境
  • 笔记本电脑联想T14重启后无法识别外置红米屏幕