1. 程式人生 > >自定義Gradle外掛(二)

自定義Gradle外掛(二)

上一篇部落格已經介紹瞭如何實現簡單的自定義gradle外掛,今天介紹如何自定義Task。

一、自定義Task

         1、直接沿用上一篇的程式碼,copy一份改名CustomPluginTask

         在plugin\src\main\groovy\com\micky\gradle目錄建立原始檔 MyCustomTask.groovy

package com.micky.gradle;

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class MyCustomTask extends DefaultTask {
	@TaskAction
	void output() {
		println "Hello this is my custom task output"
	}
}

         2、修改MyCustomPlugin.groovy
package com.micky.gradle;

import org.gradle.api.*;

class MyCustomPlugin implements Plugin<Project> {
	void apply(Project project) {
		project.task('customTask', type: MyCustomTask)
	}
}

         3、修改plugin目錄下的build.gradle,修改版本號
apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
	compile gradleApi()
	compile localGroovy()
}

repositories {
	mavenCentral()
}

group='com.micky'
version='1.0.1'

uploadArchives {
	repositories {
		mavenDeployer {
			repository(url: uri('../repo'))
		}
	}
}
         執行gradle uploadArchives 編譯外掛包
         

         4、sample目錄下的build.gradle

buildscript {
	repositories {
		maven {
			url uri('../repo')
		}
	}

	dependencies {
		classpath group: 'com.micky',
			name: 'gradle-micky',
			version: '1.0.1'
	}
}

apply plugin: 'com.micky.mycustom'
         執行gradle customTask 結果如下:

        

         原始碼地址:https://github.com/mickyliu945/GradleCustomPlugin

二、向Plugin Task 傳遞引數

        1、 拷貝一份上面的程式碼,改名為CustomPluginTaskWithParam,修改plugin\src\main\groovy\com\micky\gradle\MyCustomPlugin.groovy

package com.micky.gradle;

import org.gradle.api.*;

class MyCustomPluginExtension {
	def message = "From MyCustomPluginExtention"
	def sender = "MyCustomPluin"
}

class MyCustomPlugin implements Plugin<Project> {
	void apply(Project project) {
		project.extensions.create('myArgs', MyCustomPluginExtension)
		project.task('customTask', type: MyCustomTask)
	}
}

        2、修改plugin\src\main\groovy\com\micky\gradle\MyCustomTask.groovy
package com.micky.gradle;

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class MyCustomTask extends DefaultTask {
	@TaskAction
	void output() {
		println "Sender is ${project.myArgs.sender},\nmessage: ${project.myArgs.message}"
	}
}
        

        3、修改plugin/build.gradle

apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
	compile gradleApi()
	compile localGroovy()
}

repositories {
	mavenCentral()
}

group='com.micky'
version='1.0.2'

uploadArchives {
	repositories {
		mavenDeployer {
			repository(url: uri('../repo'))
		}
	}
}

        執行gradle uploadArchives 編譯外掛包

        4、修改sample/build.gradle

buildscript {
	repositories {
		maven {
			url uri('../repo')
		}
	}

	dependencies {
		classpath group: 'com.micky',
			name: 'gradle-micky',
			version: '1.0.2'
	}
}

apply plugin: 'com.micky.mycustom'
        5、執行gradle customTask,結果如下:
        

        6、在gradle檔案配置引數

buildscript {
	repositories {
		maven {
			url uri('../repo')
		}
	}

	dependencies {
		classpath group: 'com.micky',
			name: 'gradle-micky',
			version: '1.0.2'
	}
}

apply plugin: 'com.micky.mycustom'

myArgs {
	sender='Micky Liu'
	message='Gradle is so simple.'
}

        7、 執行gradle customTask,結果如下:
        

        原始碼地址:https://github.com/mickyliu945/GradleCustomPlugin

三、向Plugin Task 傳遞巢狀試複雜引數

        1、 拷貝一份上面的程式碼,改名為CustomPluginTaskWithNestParam,修改plugin\src\main\groovy\com\micky\gradle\MyCustomPlugin.groovy

package com.micky.gradle;

import org.gradle.api.*;

class MyNestPluginExtension {
	def receiver = "Kate Zhou"
	def email = "[email protected]"
}

class MyCustomPluginExtension {
	def message = "From MyCustomPluginExtention"
	def sender = "MyCustomPluin"
}

class MyCustomPlugin implements Plugin<Project> {
	void apply(Project project) {
		project.extensions.create('myArgs', MyCustomPluginExtension)
		project.myArgs.extensions.create('nestArgs', MyNestPluginExtension)
		project.task('customTask', type: MyCustomTask)
	}
}

         2、修改MyCustomPlugin.groovy
package com.micky.gradle;

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class MyCustomTask extends DefaultTask {
	@TaskAction
	void output() {
		println "Sender is ${project.myArgs.sender} \nmessage: ${project.myArgs.message}"
		println "Receiver is ${project.myArgs.nestArgs.receiver} \nemail: ${project.myArgs.nestArgs.email}"
	}
}

         3、修改plugin/build.gradle
apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
	compile gradleApi()
	compile localGroovy()
}

repositories {
	mavenCentral()
}

group='com.micky'
version='1.0.3'

uploadArchives {
	repositories {
		mavenDeployer {
			repository(url: uri('../repo'))
		}
	}
}

         4、執行gradle uploadArchives 編譯外掛包

         5、修改sample/build.gradle

buildscript {
	repositories {
		maven {
			url uri('../repo')
		}
	}

	dependencies {
		classpath group: 'com.micky',
			name: 'gradle-micky',
			version: '1.0.3'
	}
}

apply plugin: 'com.micky.mycustom'

myArgs {
	sender='Micky Liu'
	message='Gradle is so simple.'
}
           
         6、執行執行gradle customTask,結果如下:

          

         7、在gradle檔案配置引數

buildscript {
	repositories {
		maven {
			url uri('../repo')
		}
	}

	dependencies {
		classpath group: 'com.micky',
			name: 'gradle-micky',
			version: '1.0.3'
	}
}

apply plugin: 'com.micky.mycustom'

myArgs {
	sender='Micky Liu'
	message='Gradle is so simple.'
	nestArgs {
		receiver='David Chen'
		email='[email protected]'
	}

}

         8、執行gradle customTask,結果如下:
         

原始碼地址:https://github.com/mickyliu945/GradleCustomPlugin

相關推薦

定義Gradle外掛

上一篇部落格已經介紹瞭如何實現簡單的自定義gradle外掛,今天介紹如何自定義Task。 一、自定義Task          1、直接沿用上一篇的程式碼,copy一份改名CustomPluginTask          在plugin\src\main\groov

定義Gradle外掛

Google已經建議Android開發全部轉向Android Studio開發,Android Studio 是使用gradle編譯、打包的,那麼問題來了,gradle可是有一堆東西...,為了測底瞭解gradle,今天就來學習下如何寫自己的gradle外掛(當然外掛原

WPF定義控件の重寫原生控件樣式模板

我們 new 所有 代碼 microsoft tps ron 例子 family 開發過程中,我們有時候用WPF原生的控件就能實現自己的需求,但是樣式、風格並不能滿足我們的需求,那麽我們該怎麽辦呢?----自定義樣式與模板。 一、樣式 在WPF中我們可以

按鈕配置之定義按鈕使用——JEPLUS軟件快速開發平臺

bottom vpd 開發平臺 rem 按鈕 ros cto -c spa JEPLUS按鈕配置之自定義按鈕使用(二)之前的一篇筆記講的是在列表上添加自定義按鈕來完成自己的業務需求,今天這篇筆記就主要講一下如何在表

DispNet中Caffe定義層解讀——DataAugmentation

DispNet中Caffe自定義層解讀(二)——DataAugmentation 這一系列博文記錄了博主在學習DispNet過程中遇到的自定義Caffe層的筆記。這一部分是DataAugmentation層,其主要功能是:根據要求對輸入的資料進行擴張,從而從資料的角度上儘量緩解過擬合

java定義註解學習_註解詳解

上篇文章,我們簡單的實現了一個自定義註解,相信大家對自定義註解有了個簡單的認識,這篇,這樣介紹下註解中的元註解和內值註解 整體圖示 內建註解 @Override 重寫覆蓋 這個註解大家應該經常用到,主要在子類重寫父類的方法,比如toString()方法 package com.kevin.demo;

Android定義View初探——仿360垃圾清理

明天就是五一勞動節了,在這裡先祝各位程式猿勞動節快樂,別在加班了! 自從嘗試過寫自定義View(Android自定義View初探(一)——餅圖)之後,每當看到別人的應用時,總是在想別人的實現方式,或許,這就是程式猿的悲哀吧O(∩_∩)O~。 前兩天就想嘗試去

編寫Qt Designer定義控制元件——編寫定義控制元件介面

        既然是控制元件,就應該有介面,預設生成的控制元件類只是一個繼承了QWidget的類,如下: #ifndef LOGLATEDIT_H #define LOGLATEDIT_H #include <QWidget> class LogLat

基於Android搭建tensorflow lite,實現官網的Demo以及執行定義tensorflow模型

基於上一篇在android studio 中已經佈置好的環境進行開發。這篇文章是基於手寫識別的例子,在tensorflow中搭建一個簡單的BP神經網路,在實現手寫數字的識別,然後把這個網路生成檔案,在android的tensorflow lite中執行。一 在tensorfl

Android定義控制元件-給定義控制元件新增事件

在這篇部落格中主要講解給Android自定義控制元件新增點選事件,實現可以按住百分比圓圈在螢幕上進行拖動圓圈的功能。分兩部分講,第一部分是獲取自定義控制元件的座標,第二部分是重新繪製控制元件。 第一部分:獲取自定義控制元件座標 首先看一張圖,這是自定義控制元件中獲

百度地圖JavaScript API 學習之定義標註圖示

地圖繪製之新增自定義標註圖示(二) 官方提供了兩種方法來自定義標註圖示: 通過引數MarkerOptions的icon屬性進行設定 使用Marker.setIcon()方法。 第二

定義控制元件Paint,Canvas 基礎用法

本篇部落格繼續學習 Paint 和 Canvas 的基礎用法,上一篇部落格學習了基礎API使用( 基礎幾何圖形,Path 路徑 ),接下來學習 繪製文字 和 繪製圖片 上一篇文章,沒看的有必要先了解一下: 自定義控制元件(一)Paint,Canvas 基礎用

Spring Security 定義登入認證

一、前言 本篇文章將講述Spring Security自定義登入認證校驗使用者名稱、密碼,自定義密碼加密方式,以及在前後端分離的情況下認證失敗或成功處理返回json格式資料 溫馨小提示:Spring Security中有預設的密碼加密方式以及登入使用者認證校驗,但小編這裡選擇自定義是為了方便以後業務擴充套件,

WPF -- 定義控制元件 UserControl

在這裡我們將將打造一個UserControl(使用者控制元件)來逐步講解如何在WPF中自定義控制元件,並將WPF的一些新特性引入到自定義控制元件中來. 我們製作了一個帶語音報時功能的鐘表控制元件, 效果如下: 在VS中右鍵單擊你的專案,點選"新增新專案",在出現的選擇列表中選

Android定義控制元件系列定義開關按鈕

這一次我們將會實現一個完整純粹的自定義控制元件,而不是像之前的組合控制元件一樣,拿系統的控制元件來實現;計劃分為三部分:自定義控制元件的基本部分,和自定義控制元件的自定義屬性; 下面就開始第一部分的編寫,本次以一個定義的開關按鈕為例,下面就開始吧: 先看看效果,一個點選開

自己定義控件自己定義Dialog

ble top cancel type lis icon ner javascrip findview 本節要實現:自己定義一個Dialog 結果例如以下: 步 驟 1.配置register_dialog.xml: 以下是一個自己定義的dia

六.定義函數

rip false list 字符 pick 之前 格式 而不是 ken 1.使用IDLE的異常信息: try:   data=open(‘missing.txt‘)   print(data.readline(),end=‘‘) """為異常對象給定一個名,然後作為錯誤消

MVC4 定義錯誤頁面

gif static quest glob logger tool iis def .cn 一、概述 MVC4框架自帶了定義錯誤頁,該頁面位於Shared/Error,該頁面能夠顯示系統未能捕獲的異常,如何才能使用該頁面; 二、使用步驟: 1、配置WebConfig文件,在

WPF定義控件定義控件

自己 setvalue prop 一個 自己的 支持 property get element 在實際工作中,WPF提供的控件並不能完全滿足不同的設計需求。這時,需要我們設計自定義控件。 這裏LZ總結一些自己的思路,特性如下: Coupling UITemplate Be

微信小程序 定義組件stepper

sin order pad htm adding nor font 定義 margin 項目目錄: 步驟一:創建組件 聲明這一組文件為自定義組件 stepper.json { "component": true, "usingComponents": {} }