Gradle的屬性設置大全


Gradle的屬性設置大全

Gradle作為一款項目構建工具,由於其強大、靈活、快速、完全兼容Ant等特性,越來越受到人們歡迎。Gradle的靈活有時候也會引起人們的困惑。比如在Gradle中設置變量和屬性就有N種辦法。由於Gradle的理念是Convention over configruation(約定優於配置),所以如果了解了這些約定,那么在使用Gradle的屬性配置時一定會如魚得水。


在項目根目錄下建立名為gradle.properties文件,在該文件中定義需要的屬性。這些屬性在Gradle構建Gradle領域對象(即project對象實例)時會被自動加到project對象實例中作為其屬性被直接調用。

gradle.properties
1
guestName= Bowen 
build.gradle
1
2
3
4
task hello << {  println $guestName  println "hello, $guestName" } 
1
2
3
4
5
6
$ gradle hello -q Bowen hello, Bowen $ gradle properties | grep guestName guestName: Bowen 

定義在build.gradle中的ext塊中。ext准確的說是Gradle領域對象的一個屬性,我們可以將自定義的屬性添加到ext對象上,Build.gradle中的其它代碼片段可以使用。

build.gradle
1
2
3
4
5
6
7
8
ext {  guestName='Bowen' } task hello << {  println guestName  println "hello, $guestName" } 
1
2
3
4
5
6
7
8
$ gradle hello -q Bowen hello, Bowen $ gradle properties | grep guestName guestName: Bowen $ gradle properties | grep ext ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@10ef5fa0 

從上述可以看到ext對象其實是DefaultExtraPropertiesExtension對象的一個實例。


在命令行中通過-D或者-P給Gradle實時創建屬性。 -D屬性會被傳送給啟動Gradle的jvm,作為一個系統屬性被jvm使用。

build.gradle
1
2
3
task hello << {  println System.properties['guestName'] } 
1
2
$ gradle hello -DguestName='Bowen' -q Bowen 

-P屬性則會被直接加載到Gradle領域對象上。

build.gradle
1
2
3
task hello << {  println "hello, $guestName" } 
1
2
$ gradle hello -PguestName='Bowen' -q hello, Bowen 

在Gradle配置文件中創建系統屬性。剛講過在gradle.properties文件可以創建屬性,同時我們也可以創建系統屬性。如果有systemProp.前綴的屬性會被識別為系統屬性。

gradle.properties
1
systemProp.guestName = 'Bowen' 
build.gradle
1
2
3
task hello << {  println "hello, " + System.properties['guestName'] } 
1
2
$ gradle hello -q hello, Bowen 

將特殊前綴的系統屬性或環境變量自動加入到Gradle領域對象中。

如果有環境變量以ORG_GRADLE_PROJECT.為前綴,那么該變量會被自動添加到Gradle領域對象中。同樣,如果有系統屬性以org.gradle.project.為前綴,那么也會被自動加入到Gradl領域對象中。這一特性的目的之一是為了隱藏一些敏感的信息。比如在執行Gradle腳本時需要傳入密碼信息,如果以-P的方式傳送會被別人看到。而把該屬性保存為環境變量,只有系統管理員才有權訪問和修改。在運行Gralde的時候該環境變量會被自動加入到Gradle對象中被使用,隔離了明暗數據,又不行影響其他用戶使用。(其他用戶可以通過-P方式是設置該屬性)。

build.gradle
1
2
3
task hello << {  println "hello, " + guestName } 
1
2
3
4
5
6
$ gradle hello -Dorg.gradle.project.guestName=Bowen -q hello, Bowen $ export ORG_GRADLE_PROJECT_guestName=Bob $ gradle hello -q hello, Bob 

 

作者: 黃博文 @無敵北瓜 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM