我正在使用 gradle v3.4 并从 secrets.properties 文件(传递到 project.ext)中填充了属性,但是当我使用凭据部分中的变量时,我收到了一个错误,从符合身份验证问题的 nexus 这让我相信字符串插值无法正常工作。我可以在凭据部分之前打印变量值。
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 中使用双引号。
最佳答案
问题是如何在外部属性文件中指定属性。我对属性文件中的字符串值使用双引号,这导致身份验证失败。从外部属性文件中删除双引号后,我就可以发布到 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
}
}
}
}
这有效。
关于gradle - 通过 maven-publish 在 gradle 中设置凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901251/