我正在使用gradle v3.4并且已经从secrets.properties文件中填充了属性(传递到project.ext)但是当我在凭证部分中使用变量时,我从nexus complianing收到有关身份验证问题的错误我相信字符串插值不正常。我可以在凭证部分之前打印变量值。
的build.gradle
maven {
credentials {
println(project.nexusUsername) //prints the value
username '${project.nexusUsername}'
password '${project.nexusPassword}'
}
if (project.version.endsWith("-SNAPSHOT")) {
url "http://nexus.somewhere.com/repository/some-java-snapshot/"
} else {
url "http://nexus.somewhere.com/repository/some-java-release/"
}
}
更新 我更新了上面的凭据部分以使用双引号(不是单引号),但这并没有解决问题。单引号是字符串文字 - 如果需要字符串插值,则需要在groovy中使用双引号。
答案 0 :(得分:9)
问题是如何在外部属性文件中指定属性。我在属性文件中使用双引号作为字符串值,这导致身份验证失败。一旦我从外部属性文件中删除了双引号,我就能够发布到nexus了。
外部属性文件设置不正确
someUsername="someuser"
更正外部属性文件设置
someUsername=someuser
<强>的build.gradle 强>
publishing {
publications {
shadow(MavenPublication) {
from components.shadow
groupId project.group
artifactId project.artifactId
}
}
repositories {
maven {
credentials {
username project.someUsername
password project.somePassword
}
if (project.version.endsWith("-SNAPSHOT")) {
url project.someSnapshot
} else {
url project.someRelease
}
}
}
}
这项工作 - 希望这是有效的。
答案 1 :(得分:2)
单引号表示没有变量扩展的字符串文字;
请使用
username project.nexusUsername
password project.nexusPassword
参考:http://docs.groovy-lang.org/latest/html/documentation/#_single_quoted_string