Table of Contents
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 keyName println 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环境配置,解析System.properties与gradle.properties的优先级及访问规则,提供使用案例,包括如何设置Vault角色ID与密钥ID,以及常用的Gradle调试参数。
1616

被折叠的 条评论
为什么被折叠?



