一個簡單的Gradle指令碼檔案
通過一個簡單的Gradle指令碼檔案理解其主要語法:
// build.gradle 檔案
// 建議執行在JDK1.8下,Gradle5.0將不再支援JDK1.7的執行
// Support for running Gradle using Java 7 has been deprecated and is scheduled to be removed in Gradle 5.0.
// 定義 helloword 任務
// 命令列終端執行 gradle -q helloword 輸出 Hello world!
// 選項 -q 表示 --quiet
task helloword {
// doLast 語句
doLast {
println 'Hello world!'
}
}
// 可以指定一個快捷鍵(<<符號表示)到 doLast 語句來簡化 helloword 任務
// 但不建議這麼使用,因為<<將在Gradle5.0中刪除
// The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
task hellowordLeftShift << {
println 'Hello world!';
}
// Gradle 構建指令碼使用 Groovy API
task upper {
doLast {
String expString = 'Yiibai gradle totorials'
println "Original: " + expString
println "Upper case: " + expString.toUpperCase()
}
}
// 4次列印隱式引數($it)的值
task count {
doLast{
4.times {
print "$it"
}
}
}
// Groovy的JDK方法
// Groovy增加了很多有用的方法到標準的Java類。例如,從Java API可迭代實現它遍歷Iterable介面的元素的 each() 方法。
task groovyJDKMethod {
doLast {
String myName = "Yiibai";
myName.each(){
println "${it}"
};
}
}
task hello
// 定位任務
// 如果要查詢在構建檔案中定義的任務,則必須使用相應的標準專案屬性。這意味著每個任務都可以作為專案的屬性,使用任務名稱作為屬性名稱。
println tasks.hello.name
println tasks['hello'].name
// 任務依賴關係
task intro(dependsOn: 'helloword'){
doLast{
println "I'm gradle"
}
}
task taskX(dependsOn: 'taskY'){
doLast{
println "taskX"
}
}
task taskY{
doLast{
println 'taskY'
}
}
task task1 << {
println 'compiling source #1'
}
task task2(dependsOn: task1) << {
println 'compiling unit tests #2'
}
task task3(dependsOn: [task1, task2]) << {
println 'running unit tests #3'
}
task task4(dependsOn: [task1, task3]) << {
println 'building the distribution #4'
}
// 另一種方法來新增任務依賴,它就是通過使用閉包。
task taskXLib {
doLast{
println 'taskXLib'
}
}
taskXLib.dependsOn{
tasks.findAll{
task -> task.name.startsWith('lib')
}
}
task lib1 {
doLast{
println 'lib1'
}
}
task lib2 {
doLast {
println 'lib2'
}
}
task notALib {
doLast {
println 'notALib'
}
}
// 向任務新增描述
// 使用 description 關鍵字可以向任務新增描述,執行Gradle任務時會顯示此描述。
// 執行任務一個task都會顯示,不只是copy
task copy(type: Copy){
description 'Copies the resource directory to the target directory.'
from 'resource'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
println('description applied')
}
// 跳過任務
// 如果用於跳過任務的邏輯不能用謂詞表示,則可以使用 StopExecutionException 。如果操作丟擲此異常,則會跨過此操作的進一步執行以及此任務的後續操作的執行。
task compile {
doLast{
println 'We are doing the compile.'
}
}
compile.doFirst{
// Here you would put arbitrary conditions in real life.
// But this is used in an integration test so we want defined behavior.
if(true){ throw new StopExecutionException() }
}
task myTask(dependsOn: 'compile'){
doLast{
println 'I am not affected'
}
}
// 外掛
/*
* Gradle中有兩種型別的外掛:指令碼外掛和二進位制外掛。
* 指令碼外掛是一個額外的構建指令碼,它提供了一種宣告性方法來操作構建,通常在構建中使用。
* 二進位制外掛是實現外掛介面並採用程式設計方法來操作構建的類。二進位制外掛可以駐留在外掛JAR中的一個構建指令碼和專案層次結構或外部。
* */
apply plugin: 'java'
repositories{
mavenCentral()
}
// 編寫自定義外掛
// 一個簡單的hello外掛
apply plugin: HelloPlugin
class HelloPlugin implements Plugin<Project> {
void apply(Project project){
project.task('hello') {
doLast {
println "Hello from the HelloPlugin."
}
}
}
}
// 依賴
/*
* 宣告依賴關係
* Gradle遵循一些特殊語法來定義依賴關係。
* 以下指令碼定義了兩個依賴項,一個是Hibernate core 3.6.7,第二個是Junit 4.0和更高版本。
* 如下面的程式碼所示,可在build.gradle檔案中使用此程式碼。
* */
dependencies{
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
testCompile group: 'junit', name: 'junit', version: '4.+'
}
相關文章
- 一個簡單的python指令碼:從給出的svnurl取出檔案Python指令碼
- 最簡單的一個powershell的指令碼指令碼
- 一個簡單的ipf配置檔案
- 共享一個iptables的shell指令碼檔案指令碼
- 一個確定trace檔案的指令碼指令碼
- 使用Gradle建立一個最簡單的Spring Boot專案GradleSpring Boot
- 一個簡單的檔案管理程式 (轉)
- 一個最簡單的XML檔案(轉)XML
- 編寫簡單的windows bat批處理指令碼檔案WindowsBAT指令碼
- 一個簡單的自動備份alert log指令碼指令碼
- 一個非常簡單易懂的WIFI密碼爆破python指令碼WiFi密碼Python指令碼
- 一個.Net簡單、易用的配置檔案操作庫
- 一個簡單資料庫健康檢查指令碼資料庫指令碼
- 簡單介紹Shell指令碼之檔案批次建立與修改的方法指令碼
- 一個簡單的Linux啟動jar包的shell指令碼LinuxJAR指令碼
- 【shell 】求兩個檔案相加的指令碼指令碼
- 【SQL】【遷移】寫了一個簡單的sequence遷移指令碼SQL指令碼
- 一個刪除重做日誌檔案的參考指令碼指令碼
- 寫一個Python指令碼刪除一個.py檔案的所有註釋Python指令碼
- shell指令碼的一則簡單運用案例指令碼
- [Vue]寫一個簡單的檔案上傳控制元件Vue控制元件
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- 用python指令碼計算某一個檔案的行數Python指令碼
- angular學習筆記(三十)-指令(9)-一個簡單的指令示例Angular筆記
- mysql簡單的碎片清理指令碼MySql指令碼
- 簡單的FTP Donwload 指令碼FTP指令碼
- Vue封裝一個簡單輕量的上傳檔案元件Vue封裝元件
- 測試網站頁面網速的一個簡單Python指令碼網站Python指令碼
- 將framework檔案放在一個單獨的檔案中Framework
- PHP 使用檔案鎖 避免同時執行一個指令碼PHP指令碼
- 簡述密碼檔案的兩個特性密碼
- 分析alert檔案的指令碼指令碼
- 指令碼檔案命名指令碼
- 一個簡單的驗證碼工具
- 使用 Fuse 和 java 17 編寫一個簡單的檔案系統Java
- 寫了一個簡單的Linux Shell用來下載檔案Linux
- PHP單一檔案入口框架簡析PHP框架
- 簡單的 Shell 指令碼入門教程指令碼