在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 教程-雜七雜八
問題反饋
Gradle 插件
Scala 插件
Gradle 命令行的基本使用
任務詳述
安裝
概述
教程-雜七雜八
構建環(huán)境
依賴管理基礎
使用 Gradle 圖形用戶界面
使用文件
CodeNarc 插件
Sonar 插件
Groovy 插件
Sonar Runner 插件
OSGi 插件
Ear 插件
Gradle 守護進程
Java 插件
簡介
構建基礎
FindBugs 插件
Groovy 快速入門
JaCoCo 插件
PMD 插件
War 插件
Checkstyle 插件
日志
Java 構建入門
Jetty 插件
從 Gradle 中調用 Ant
標準的 Gradle 插件
Web 工程構建
JDepend 插件
編寫構建腳本

教程-雜七雜八

創(chuàng)建目錄

有一個常見的情況是,多個任務都依賴于某個目錄的存在。當然,你可以在這些任務的開始加入 mkdir 來解決這個問題。但這是種臃腫的解決方法。這里有一個更好的解決方案 (僅適用于這些需要這個目錄的任務有著 dependsOn 的關系的情況):

使用 mkdir 創(chuàng)建目錄

build.gradle

classesDir = new File('build/classes')
task resources << {
    classesDir.mkdirs()
    // do something
}
task compile(dependsOn: 'resources') << {
    if (classesDir.isDirectory()) {
        println 'The class directory exists. I can operate'
    }
    // do something
}  

gradle -q compile的輸出結果

> gradle -q compile
The class directory exists. I can operate  

Gradle 屬性和系統(tǒng)屬性

Gradle 提供了許多方式將屬性添加到您的構建中。 從Gradle 啟動的 JVM,你可以使用 -D 命令行選項向它傳入一個系統(tǒng)屬性。 Gradle 命令的-D選項和 java 命令的 -D 選項有著同樣的效果。

此外,您也可以通過屬性文件向您的 project 對象添加屬性。您可以把一個 gradle.properties 文件放在 Gradle 的用戶主目錄(默認為 USER_HOME/.gradle),或您的項目目錄中。對于多項目構建,您可以將 gradle.properties 文件放在任何子項目的目錄中。通過 project 對象,可以訪問到 gradle.properties 里的屬性。用戶的主目錄中的屬性文件比項目目錄中的屬性文件更先被訪問到。

你也可以通過使用-P命令行選項來直接向您的項目對象添加屬性。在更多的用法中,您甚至可以通過系統(tǒng)和環(huán)境屬性把屬性直接傳給項目對象。例如,如果你在一個持續(xù)集成服務器上運行構建,但你沒有這臺機器的管理員權限,而你的構建腳本需要一些不能讓其他人知道的屬性值,那么,您就不能使用 -P 選項。在這種情況下,您可以在項目管理部分 (對普通用戶不可見) 添加一個環(huán)境屬性。如果環(huán)境屬性遵循 ORG_GRADLE_PROJECT_propertyName= somevalue 的模式,這里的 propertyName 會被添加到您的項目對象中。對系統(tǒng)屬性我們也支持相同的機制。唯一的區(qū)別是,它是 org.gradle.projectpropertyName 的模式。

通過 gradle.properties 文件,你還可以設置系統(tǒng)屬性。如果此類文件中的屬性有一個systemProp.的前綴,該屬性和它的值會被添加到系統(tǒng)屬性,且不帶此前綴。在多項目構建中,除了在根項目之外的任何項目里的 systemProp. 屬性集都將被忽略。也就是,只有根項目gradle.properties 文件里的 systemProp. 屬性會被作為系統(tǒng)屬性。

使用 gradle.properties 文件設置屬性

gradle.properties

gradlePropertiesProp=gradlePropertiesValue
systemProjectProp=shouldBeOverWrittenBySystemProp
envProjectProp=shouldBeOverWrittenByEnvProp
systemProp.system=systemValue  

build.gradle

task printProps << {
    println commandLineProjectProp
    println gradlePropertiesProp
    println systemProjectProp
    println envProjectProp
    println System.properties['system']
}  

gradle -q -PcommandLineProjectProp=commandLineProjectPropValue -Dorg.gradle.project.systemProjectProp=systemPropertyValue printProps的輸出結果

> gradle -q -PcommandLineProjectProp=commandLineProjectPropValue -Dorg.gradle.project.systemProjectProp=systemPropertyValue printProps
commandLineProjectPropValue
gradlePropertiesValue
systemPropertyValue
envPropertyValue
systemValue  

檢查項目的屬性

當你要使用一個變量時,你可以僅通過其名稱在構建腳本中訪問一個項目的屬性。如果此屬性不存在,則會引發(fā)異常,并且構建失敗。如果您的構建腳本依賴于一些可選屬性,而這些屬性用戶可能在比如 gradle.properties 文件中設置,您就需要在訪問它們之前先檢查它們是否存在。你可以通過使用方法 hasProperty('propertyName') 來進行檢查,它返回 true 或 false。

使用外部構建腳本配置項目

您可以使用外部構建腳本來配置當前項目。Gradle 構建語言的所有內(nèi)容在外部腳本中也可以使用。您甚至可以在外部腳本中應用其他腳本。

使用外部構建腳本配置項目

build.gradle

apply from: 'other.gradle'  

other.gradle

println "configuring $project"
task hello << {
    println 'hello from other script'
}  

gradle -q hello的輸出結果

> gradle -q hello
configuring root project 'configureProjectUsingScript'
hello from other script  

配置任意對象

您可以用以下非常易理解的方式配置任意對象。

配置任意對象

build.gradle

task configure << {
    pos = configure(new java.text.FieldPosition(10)) {
        beginIndex = 1
        endIndex = 5
    }
    println pos.beginIndex
    println pos.endIndex
}  

gradle -q configure 的輸出結果

> gradle -q configure
1
5  

使用外部腳本配置任意對象

你還可以使用外部腳本配置任意對象

使用腳本配置任意對象

build.gradle

task configure << {
    pos = new java.text.FieldPosition(10)
    // Apply the script
    apply from: 'other.gradle', to: pos
    println pos.beginIndex
    println pos.endIndex
}  

other.gradle

beginIndex = 1;
endIndex = 5;  

gradle -q configure 的輸出結果

> gradle -q configure
1
5  

緩存

為了提高響應速度,默認情況下 Gradle 會緩存所有已編譯的腳本。這包括所有構建腳本,初始化腳本和其他腳本。你第一次運行一個項目構建時, Gradle 會創(chuàng)建 .gradle 目錄,用于存放已編譯的腳本。下次你運行此構建時, 如果該腳本自它編譯后沒有被修改,Gradle 會使用這個已編譯的腳本。否則該腳本會重新編譯,并把最新版本存在緩存中。如果您通過 --recompile-scripts 選項運行 Gradle ,會丟棄緩存的腳本,然后重新編譯此腳本并將其存在緩存中。通過這種方式,您可以強制 Gradle 重新生成緩存。

上一篇:構建環(huán)境下一篇:Java 插件