今日名言
我們每天都在經受巨大的痛苦,而最大的痛苦就是不被人了解
文章目錄
-
- 導讀
- 配置任務
導讀
通過上一節gradle系列——Task任務簡單使用 我們知道了gradle中Task的簡單使用,比如如何給任務添加行為,如何為任務設定依賴關系,下面我們開始針對Copy任務來詳解Task的進階用法
在開發的過程中,我們見過很多種定義任務的方式,不要奇怪,gradle的文法比較松散,基本上有這些方式定義
// 第一種,比較普通的方式
task hello {
doLast {
println "Hello World!"
}
}
// 第二種,以字元串形式定義的
task('hello') {
doLast {
println "hello"
}
}
// 第三種,以字元串形式定義的,
// 其類型為Copy任務類型,接下來會具體講解
task('copy', type: Copy) {
from(file('srcDir'))
into(buildDir)
}
// 第四種,使用create建立
tasks.create(name: 'hello') {
doLast {
println "hello"
}
}
// 第四種,使用create建立
tasks.create(name: 'copy', type: Copy) {
from(file('srcDir'))
into(buildDir)
}
如果遇見上面這些方式不要慌張,他們表示的意思都是一樣的
配置任務
我們針對copy任務進行配置,了解了copy任務的配置,我們就可以舉一反三進行其他任務的配置
首先我們定義一個任務
task myCopy(type: Copy) {
from 'src'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
}
該任務實作了把src目錄下的所有 .txt、.xml 和 .properties 檔案全部拷貝到
target
目錄下。
比如我們要拷貝一個檔案時需要對檔案進行改名,我們可以這麼寫
task myCopy(type: Copy) {
from 'src'
into 'target'
include('text.txt')
// 改名操作
rename { String fileName ->
fileName = "gai.txt"
}
}
有一個重要的問題,我們從何處得知這些操作如何做呢
當然是官網:gradle官網
Gradle 中很多其它常用的任務,比如
Jar
、
Delete
、
War
、
Zip
、
Tar
和
Upload
等等,這些的用法和 Copy 配置一樣,大家可以自己編寫任務測試下
這裡貼一個Jar類型的任務
打包jar的一個任務
task makeJar(type: Jar) {
// 輸入檔案
from zipTree(file('classes.jar'))
// 添加檔案
from fileTree(dir: 'src/main', includes: ['assets/**']) // 打包assets目錄下的所有檔案
// 輸出名稱 會自動加上.jar
baseName = "test"
// 輸出路徑
destinationDir = file('des/jar/')
}