本文主要是介绍gradle 属性访问和优先级 [gradle properties access and precedence],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Table of Contents
0. gradle环境
1.System.properties
2. gradle.properties
3. 使用案例
4 gradle 常用调试参数
0. gradle环境
1.System.properties
优先级从高到低;
1) -Dsystem.some.key=some.value
2) systemProp.system.some.key=some.value in gradle.properties of project root.
-D优先级高于gradle.properties里定义sytemProp的属性。
key命名规则:System.properties里定义的key的特点:key可以使用java常用命名字符([a-zA-Z0-9_])和一些特殊字符(.-)。
例如
systemProp.vaule.roleId=mySystemRoleId
-Dvault.role-id=System_D_role-id
访问规则:使用System.properties['key'], System.getProperty(key)来获取里面的值;
task printProps {println "print out properties ..."// access system.properties['key']println System.properties['vault.role-id']println System.getProperty('vault.role-id') }
2. gradle.properties
优先级从高到低;
1) -Pgradle_key=gradleVault
2) system properties, e.g. when -Dgradle.user.home
is set on the command line.
gradle.properties
in GRADLE_USER_HOME
directory.
3) gradle.properties
in project root directory.
key命名规则:
gradle.properties里的属性key通常使用java 命名规范里的字符(a-zA-Z0-9_),这样可以使用${variable}访问;
若是含有其他字符(.-)等,则只能使用${getProperty(key)}来访问。
task printProps {println "print out properties ..."// access gradle.properties by keyNameprintln vaultRoleId }
3. 使用案例
Vault roleId& secretId属性设置
需求:
访问Vault时需要设置vault.roleId & vault.secretId,
在Junit test时需要使用VM 参数 -D 来设定,
在gradle build时需要自动注入vault.roleId & vault.secretId;
解决:
引文key里有特殊字符'.',所以需要使用System.properties来访问。
-Dvault.roleId=roleId 加入到VM template 里可以运行JUnit。
gradle build时,可以配置vault.roleId&vault.secretId 在gradle_user_home里(若是配置在project root gradle里容易将密码提交到代码服务器,引起密码泄露)。
systemProps.vault.roleId=myRoleID
systemProps.vault.secretId=mySecretId
4 gradle 常用调试参数
--quiet 仅显示error信息;
--warn 显示warn级别及以上的信息;
--info 显示info级别及以上的信息;
--debug 显示debug级别及以上的信息;
--stacktrace 显示exception堆栈的详细信息。
最后一个调试properties错误时特别有用。
这篇关于gradle 属性访问和优先级 [gradle properties access and precedence]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!