gradle构建_指定Gradle构建属性
gradle構(gòu)建
屬性是用于輕松自定義Gradle構(gòu)建和Gradle環(huán)境的寶貴工具。 我將在本文中演示一些用于指定Gradle構(gòu)建中使用的屬性的方法。
Gradle支持項(xiàng)目屬性和系統(tǒng)屬性 。 這篇文章中有趣的是兩者之間的主要區(qū)別是如何訪問(wèn)它們。 項(xiàng)目屬性更有助于按名稱直接訪問(wèn),而系統(tǒng)屬性是通過(guò)常規(guī)Java / Groovy系統(tǒng)屬性訪問(wèn)方法訪問(wèn)的。
使用-P從命令行傳遞項(xiàng)目屬性
將屬性傳遞到Gradle構(gòu)建的最簡(jiǎn)單方法之一是在命令行中使用-P指定項(xiàng)目屬性。 使用-P傳遞給構(gòu)建的屬性可以在構(gòu)建中作為項(xiàng)目屬性輕松訪問(wèn),并且如果其命名結(jié)構(gòu)允許,則可以像變量一樣直接訪問(wèn)。
使用-D從命令行傳遞系統(tǒng)屬性
與其他Java應(yīng)用程序一樣,可以使用-D將系統(tǒng)屬性傳遞給Gradle構(gòu)建。 盡管通過(guò)-D選項(xiàng)提供給Gradle構(gòu)建的這些系統(tǒng)屬性始終可以通過(guò)用于獲取系統(tǒng)屬性的常規(guī)Java機(jī)制提供給Gradle構(gòu)建,但是Gradle可以將Project Properties指定為系統(tǒng)屬性。 這是通過(guò)放置前綴org.gradle.project.來(lái)完成的org.gradle.project. 在生成所需屬性名稱之前。 例如,如果要使用-D指定一個(gè)名為name.first的系統(tǒng)屬性,該屬性可以供Gradle構(gòu)建使用,就像它由-P提供一樣,則該人可以在命令行上將其作為org.gradle.project. name.first提供給Gradle構(gòu)建org.gradle.project. name.first org.gradle.project. name.first和Gradle構(gòu)建會(huì)將其視為名為name.first的項(xiàng)目屬性。
通過(guò)環(huán)境變量傳遞系統(tǒng)屬性
任何Java或Groovy應(yīng)用程序(包括Gradle構(gòu)建)都可以通過(guò)System.getenv(String)訪問(wèn)環(huán)境變量。 但是,如果環(huán)境變量以O(shè)RG_GRADLE_PROJECT_為前綴,則Gradle允許像其他項(xiàng)目屬性一樣在構(gòu)建中訪問(wèn)環(huán)境變量。 例如,如果某人想要在Gradle構(gòu)建name.last項(xiàng)目屬性命名為name.last并想通過(guò)環(huán)境變量將其提供給構(gòu)建,則該人可以聲明環(huán)境變量ORG_GRADLE_PROJECT_name.last并且其值可用于Gradle作為名稱為name.last的項(xiàng)目屬性進(jìn)行name.last 。
gradle.properties
也可以通過(guò)名為gradle.properties的屬性文件將屬性提供給Gradle構(gòu)建。 用systemProp.指定的任何屬性systemProp. 其屬性名稱的開(kāi)頭被視為Gradle構(gòu)建中的系統(tǒng)屬性,而其他屬性(其名稱以“ systemProp。開(kāi)頭”)則被視為Gradle項(xiàng)目屬性。 例如,如果我的gradle.properties文件具有屬性name.last=Marx和屬性name.last=Marx systemPropr.name.first=Dustin , name.last在Gradle構(gòu)建中看到并訪問(wèn)name.last屬性,就像該name.first任何項(xiàng)目屬性一樣name.first像任何系統(tǒng)屬性一樣, name.first屬性將在Gradle構(gòu)建中被看到和訪問(wèn)。
示范/范例
每種類型的屬性指定機(jī)制都可以通過(guò)一個(gè)簡(jiǎn)單的示例進(jìn)行演示。 接下來(lái)顯示的Gradle構(gòu)建會(huì)嘗試打印以不同方式指定的各種屬性。
build-properties.gradle
task displayProperties << {displaySystemProperties()displayGradleProjectProperties() }def displaySystemProperties() {println "\n=== System Properties ==="println "Favorite Movie (1994): ${System.properties['movie.favorite.1994']}"println "Favorite Movie (1996): ${System.properties['movie.favorite.1996']}" println "Favorite Movie (1997): ${System.properties['movie.favorite.1997']}"println "Favorite Movie (1981): ${System.properties['movie.favorite.1981']}"println "Favorite Movie (2012): ${System.properties['movie.favorite.2012']}"println "Favorite Movie (2013): ${System.properties['movie.favorite.2013']}" }def displayGradleProjectProperties() {println "\n=== Gradle Project Properties ==="println "Favorite Movie (1994): ${getProjectProperty('movie.favorite.1994')}"println "Favorite Movie (1996): ${getProjectProperty('movie.favorite.1996')}"println "Favorite Movie (1997): ${getProjectProperty('movie.favorite.1997')}"println "Favorite Movie (1981): ${getProjectProperty('movie.favorite.1981')}"println "Favorite Movie (2012): ${getProjectProperty('movie.favorite.2012')}"println "Favorite Movie (2013): ${getProjectProperty('movie.favorite.2013')}" }def String getProjectProperty(String propertyName) {String movieTitle = "null"if (hasProperty(propertyName)){movieTitle = this.properties[propertyName]}return movieTitle }傳遞給此腳本的某些屬性將在命令行中用-P ,一些屬性在命令行中用-D ,其中一個(gè)將通過(guò)環(huán)境變量提供,而兩個(gè)將通過(guò)gradle.properties提供gradle.properties文件與構(gòu)建文件位于同一目錄中。 接下來(lái)顯示該gradle.properties文件。
gradle.properties
movie.favorite.2013=Star Trek into Darkness systemProp.movie.favorite.2012=Skyfall放置gradle.properties文件后,該示例的其他兩個(gè)有趣的部分是環(huán)境變量的設(shè)置。 此處的示例是在DOS中進(jìn)行的,但是在Linux環(huán)境中,可以使用稍有不同的語(yǔ)法來(lái)完成同一件事。 DOS / Windows命令為: set ORG_GRADLE_PROJECT.movie.favorite.1981="Raiders of the Lost Ark"
對(duì)于此演示,我將使用-D和-P參數(shù)運(yùn)行Gradle構(gòu)建腳本: gradle -b build-properties.gradle displayProperties -Pmovie.favorite.1996="Independence Day" -Dmovie.favorite.1997=Gattaca -Dorg.gradle.project.movie.favorite.1994="Shawshank Redemption"
在上面列出的Gradle構(gòu)建腳本中運(yùn)行,并帶有指示的gradle.properties文件,指定了指示的環(huán)境變量,并且僅顯示了命令,輸出看起來(lái)像在下一個(gè)屏幕快照中所示。
屏幕快照指示了如何根據(jù)其來(lái)源和命名約定在Gradle構(gòu)建中查看/訪問(wèn)屬性。 簡(jiǎn)而言之,輸出顯示了在Gradle構(gòu)建中屬性可用性的以下“規(guī)則”:
- 命令行-P屬性是“項(xiàng)目屬性”
- 命令行-D屬性是“系統(tǒng)屬性”,但有一個(gè)例外
- 以org.gradle.project.開(kāi)頭的命令行-D屬性org.gradle.project. 是“項(xiàng)目屬性”
- gradle.properties中指定的gradle.properties是“項(xiàng)目屬性”,但有一個(gè)例外
- 在gradle.properties中指定的以gradle.properties開(kāi)頭的屬性systemProp. 是“系統(tǒng)屬性”
- 除了一個(gè)例外,通過(guò)環(huán)境變量指定的屬性是“系統(tǒng)屬性”
- 通過(guò)以O(shè)RG_GRADLE_PROJECT_開(kāi)頭的環(huán)境變量指定的屬性是“項(xiàng)目屬性”
結(jié)論
Gradle提供了多種方法來(lái)指定可用于自定義Gradle構(gòu)建的屬性。
翻譯自: https://www.javacodegeeks.com/2014/01/specifying-gradle-build-properties.html
gradle構(gòu)建
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的gradle构建_指定Gradle构建属性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用电脑也可以学习交换机配置想学交换机配
- 下一篇: Apache Commons Array