轉(zhuǎn)載自:http://blog.csdn.net/hongweigg/article/details/52980554?locationNum=1&fps=1
Gradle傳給虛擬機(jī)的參數(shù)通過-D命令最可靠沛厨,例如
gradlew -Dparam.key1=value1
使用ext东且, -P或systemProp傳遞屬性,經(jīng)測試静汤,均不能有效傳遞到虛擬機(jī)。
參考:
在項(xiàng)目根目錄下建立名為gradle.properties文件惫东,在該文件中定義需要的屬性衰琐。這些屬性在Gradle構(gòu)建Gradle領(lǐng)域?qū)ο螅磒roject對象實(shí)例)時(shí)會(huì)被自動(dòng)加到project對象實(shí)例中作為其屬性被直接調(diào)用。
定義在build.gradle中的ext塊中毫玖。ext準(zhǔn)確的說是Gradle領(lǐng)域?qū)ο蟮囊粋€(gè)屬性掀虎,我們可以將自定義的屬性添加到ext對象上凌盯,Build.gradle中的其它代碼片段可以使用。
從上述可以看到ext對象其實(shí)是DefaultExtraPropertiesExtension對象的一個(gè)實(shí)例烹玉。
在命令行中通過-D或者-P給Gradle實(shí)時(shí)創(chuàng)建屬性驰怎。 -D屬性會(huì)被傳送給啟動(dòng)Gradle的jvm,作為一個(gè)系統(tǒng)屬性被jvm使用二打。
-P屬性則會(huì)被直接加載到Gradle領(lǐng)域?qū)ο笊稀?/p>
在Gradle配置文件中創(chuàng)建系統(tǒng)屬性县忌。剛講過在gradle.properties文件可以創(chuàng)建屬性,同時(shí)我們也可以創(chuàng)建系統(tǒng)屬性址儒。如果有systemProp.前綴的屬性會(huì)被識(shí)別為系統(tǒng)屬性芹枷。
將特殊前綴的系統(tǒng)屬性或環(huán)境變量自動(dòng)加入到Gradle領(lǐng)域?qū)ο笾小?/h3>
如果有環(huán)境變量以O(shè)RG_GRADLE_PROJECT.為前綴,那么該變量會(huì)被自動(dòng)添加到Gradle領(lǐng)域?qū)ο笾辛ぁM瑯釉Т龋绻邢到y(tǒng)屬性以org.gradle.project.為前綴,那么也會(huì)被自動(dòng)加入到Gradl領(lǐng)域?qū)ο笾行 _@一特性的目的之一是為了隱藏一些敏感的信息走芋。比如在執(zhí)行Gradle腳本時(shí)需要傳入密碼信息,如果以-P的方式傳送會(huì)被別人看到潘鲫。而把該屬性保存為環(huán)境變量翁逞,只有系統(tǒng)管理員才有權(quán)訪問和修改蔬充。在運(yùn)行Gralde的時(shí)候該環(huán)境變量會(huì)被自動(dòng)加入到Gradle對象中被使用鸣峭,隔離了明暗數(shù)據(jù)劲腿,又不行影響其他用戶使用稿辙。(其他用戶可以通過-P方式是設(shè)置該屬性)竿拆。