如何从 buildscript 发送 Artifactory 发布凭据而不对其进行硬编码?
Posted
技术标签:
【中文标题】如何从 buildscript 发送 Artifactory 发布凭据而不对其进行硬编码?【英文标题】:How to send Artifactory publish credentials from buildscript without hardcoding them? 【发布时间】:2014-08-12 10:58:17 【问题描述】:以 Gradle 构建中的这个 sn-p 为例:
repository
repoKey = 'libs-snapshot-local'
username = 'whatever'
password = 'whatever123'
过去,我将 Maven(~/.m2
下的一些设置)配置为简单地传递用户名/密码。如果可能的话,我想避免将我的 Artifactory 服务器的登录凭据放在 buildscript 中。有更安全的解决方法吗?
【问题讨论】:
【参考方案1】:您可以将gradle.properties
file 放入您的 ~/.gradle/ 文件夹中。
您可以在此文件中输入您的凭据:
artifactoryUserName = whatever
artifactoryUserPassword = whatever123
现在您可以在构建脚本中引用这些属性:
repository
repoKey = 'libs-snapshot-local'
username = project.hasProperty('artifactoryUserName') ? artifactoryUserName : ''
password = project.hasProperty('artifactoryUserPassword') ? artifactoryUserPassword : ''
【讨论】:
如果在属性文件中找不到它们(例如,因为您在构建服务器上运行构建),您可以回退到环境变量 :)username = project.hasProperty('artifactoryUserName') ? artifactoryUserName : getenv()['ARTIFACTORY_USERNAME']
相关说明,如果 project.property 如果找不到而不是抛出异常返回 null
会更好。
是否可以全局定义repository
部分并让Gradle 从共享位置加载凭据?
@usr-local-ΕΨΗΕΛΩΝ 是的,当然。您可以为此使用例如初始化脚本。 docs.gradle.org/current/userguide/…以上是关于如何从 buildscript 发送 Artifactory 发布凭据而不对其进行硬编码?的主要内容,如果未能解决你的问题,请参考以下文章
build.gradle 中的 buildscript 和 allprojects 有啥区别?