一個簡單的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.+'
}
相關文章
- 共享一個iptables的shell指令碼檔案指令碼
- 一個簡單的Linux啟動jar包的shell指令碼LinuxJAR指令碼
- 簡單介紹Shell指令碼之檔案批次建立與修改的方法指令碼
- 一個.Net簡單、易用的配置檔案操作庫
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- 寫一個Python指令碼刪除一個.py檔案的所有註釋Python指令碼
- [Vue]寫一個簡單的檔案上傳控制元件Vue控制元件
- PHP 使用檔案鎖 避免同時執行一個指令碼PHP指令碼
- Vue封裝一個簡單輕量的上傳檔案元件Vue封裝元件
- Gradle 簽名的配置檔案 gradle.propertiesGradle
- gradle-wrapper的簡單使用GradleAPP
- 使用 Fuse 和 java 17 編寫一個簡單的檔案系統Java
- 用Vue編寫一個簡單的仿Explorer檔案管理器Vue
- 簡單的 Shell 指令碼入門教程指令碼
- redis中lua指令碼的簡單使用Redis指令碼
- hadoop_批量命令指令碼&同步檔案指令碼Hadoop指令碼
- 如何簡單的在TF卡上做一個Linux的檔案系統Linux
- dotnet 簡單寫一個 pdb 符號檔案下載器符號
- PHP單一檔案入口框架簡析PHP框架
- Linux系統配置檔案簡易shell備份指令碼Linux指令碼
- 一個網站故障排查的、程式碼更新的簡便指令碼網站指令碼
- MySQL密碼加密認證的簡單指令碼MySql密碼加密指令碼
- Shell:如何寫一個多選選單的指令碼指令碼
- 基於python編寫一個簡單的多執行緒埠掃描指令碼Python執行緒指令碼
- Shell指令碼 | 抓取log檔案指令碼
- 2 個簡單的 python 指令碼,連線 MySQL 和讀取 ExcelPython指令碼MySqlExcel
- 自定義一個gradle外掛動態修改jar包Class檔案GradleJAR
- 簡單的快捷指令
- 分享一個簡單的聊天室專案
- 配置一個簡單的傳統SSM專案SSM
- Gradle指令碼:上傳Apk到蒲公英Gradle指令碼APK
- 動態引用外部的Javascript指令碼檔案JavaScript指令碼
- 動手寫一個簡單版的谷歌TPU-指令集谷歌
- Promise 原始碼:實現一個簡單的 PromisePromise原始碼
- 程式碼來構建一個簡單的compilerCompile
- 一個簡單案例的Vue2.0原始碼Vue原始碼
- 寫一個簡單的程式碼生成器
- shell指令碼之批次清空檔案指令碼
- 【Node】簡單快捷的圖片壓縮指令碼指令碼