我正在使用Gradle并拥有我的存储库配置,这需要凭据。当我对用户名和密码进行硬编码时,一切正常。当我尝试在gradle.properties
中存储相同的凭据时,它没有。
我的build.gradle
文件中的存储库声明基本上如下所示:
repositories {
maven {
url 'https://artifactory.example.com/libs/'
credentials {
username "myUsername"
password "myPassword"
}
}
}
一切都很好,我可以连接到我的存储库。
如上所示,用户名和密码是硬编码的。我想让它可配置,因此我按照the advice in this question将以下属性添加到gradle.properties
。
storedUsername = "myUsername"
storedPassword = "myPassword"
然后我修改build.gradle
文件以引用这些属性:
repositories {
maven {
url 'https://artifactory.example.com/libs/'
credentials {
username project.storedUsername
password project.storedPassword
}
}
}
但是,我突然无法连接到我的存储库。当我检查我的服务器(Artifactory)日志时,我被告知没有名字的用户拒绝访问。
两个文件都作为兄弟姐妹在根目录中。我已将println "Username: ${project.repoUsername}"
添加到repositories{}
块,以及configurations {}
和dependencies{}
块。他们都正确地返回了他们应该的值。
我怀疑这可能是一个范围问题,但我无法弄清楚它在哪里。如何在外部文件和gradle.properties
中的凭据中使用这两个存储库?
答案 0 :(得分:2)
配置正确,但问题出在gradle.properties
。它目前以这种方式配置:
storedUsername = "myUsername"
storedPassword = "myPassword"
问题在于引号。您不必将等号右侧的值包围为字符串,因此引号被视为文字。换句话说,您发送到服务器的用户名不是myUsername
,而是"myUsername"
,可能是服务器上不存在。
删除引号将解决此问题:
storedUsername = myUsername
storedPassword = myPassword