目錄
專案屬性
以下範例示範如何以不同方式設定專案屬性。
範例 1:透過 命令列設定專案屬性
$ gradle -PgradlePropertiesProp=commandLineValue
當 Gradle 看見特別命名的系統屬性或環境變數時,它也可以設定專案屬性。如果環境變數名稱看起來像 ORG_GRADLE_PROJECT_prop=somevalue
,則 Gradle 會在您的專案物件上設定一個 prop
屬性,其值為 somevalue
。Gradle 也支援系統屬性,但命名模式不同,看起來像 org.gradle.project.prop
。以下兩者都會在您的專案物件上將 foo' 屬性設定為 `"bar"
。
範例 2:透過 系統屬性設定專案屬性
org.gradle.project.foo=bar
範例 3:透過 環境變數設定專案屬性
ORG_GRADLE_PROJECT_foo=bar
當您沒有連續整合伺服器的管理員權限,而且需要設定不應輕易可見的屬性值時,這個功能很有用。由於您無法在這種情況下使用 -P
選項,也無法變更系統層級設定檔,因此正確的策略是變更連續整合建置工作的設定,新增符合預期模式的環境變數設定。這對於系統上的普通使用者來說將不可見。
以下範例示範如何使用專案屬性。
範例 1:在設定時間讀取專案屬性
build.gradle.kts
// Querying the presence of a project property
if (hasProperty("myProjectProp")) {
// Accessing the value, throws if not present
println(property("myProjectProp"))
}
// Accessing the value of a project property, null if absent
println(findProperty("myProjectProp"))
// Accessing the Map<String, Any?> of project properties
println(properties["myProjectProp"])
// Using Kotlin delegated properties on `project`
val myProjectProp: String by project
println(myProjectProp)
build.gradle
// Querying the presence of a project property
if (hasProperty('myProjectProp')) {
// Accessing the value, throws if not present
println property('myProjectProp')
}
// Accessing the value of a project property, null if absent
println findProperty('myProjectProp')
// Accessing the Map<String, ?> of project properties
println properties['myProjectProp']
// Using Groovy dynamic names, throws if not present
println myProjectProp
Kotlin 委派屬性是 Gradle Kotlin DSL 的一部分。您需要明確指定類型為 String
。如果您需要根據屬性的存在與否進行分支,您也可以使用 String?
並檢查 null
。
請注意,如果專案屬性名稱中包含句點,則無法使用動態 Groovy 名稱。您必須改用 API 或動態陣列表示法。
範例 2:在執行時間讀取專案屬性以供使用
build.gradle.kts
tasks.register<PrintValue>("printValue") {
// Eagerly accessing the value of a project property, set as a task input
inputValue = project.property("myProjectProp").toString()
}
build.gradle
tasks.register('printValue', PrintValue) {
// Eagerly accessing the value of a project property, set as a task input
inputValue = project.property('myProjectProp')
}
如果專案屬性被參照但不存在,則會擲回例外,且建置會失敗。您應該在使用 Project.hasProperty(java.lang.String) 方法存取選擇性專案屬性前,檢查該屬性是否存在。 |