如何从 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.propertiesfile 放入您的 ~/.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 发布凭据而不对其进行硬编码?的主要内容,如果未能解决你的问题,请参考以下文章

Gradle buildscript 依赖项

Gradle 中 buildscript 块的用途

build.gradle 中的 buildscript 和 allprojects 有啥区别?

Java邮件发送工具类

动态加载`buildscript`的本地`maven`存储库路径

使用SpringBoot发送mail邮件