通过maven publish在gradle中设置凭据
我使用的是gradle v3.4,并且已经从secrets.properties文件(传递到project.ext)中填充了属性,但是当我使用凭据部分中的变量时,我从nexus Compliance获得了一个关于身份验证问题的错误,这使我相信字符串插值无法正常工作。我可以在凭证部分之前打印变量值 build.gradle通过maven publish在gradle中设置凭据,gradle,build.gradle,Gradle,Build.gradle,我使用的是gradle v3.4,并且已经从secrets.properties文件(传递到project.ext)中填充了属性,但是当我使用凭据部分中的变量时,我从nexus Compliance获得了一个关于身份验证问题的错误,这使我相信字符串插值无法正常工作。我可以在凭证部分之前打印变量值 build.gradle maven { credentials { println(project.nexusUsername) //prints the v
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/"
}
}
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
}
}
}
}
更新
我更新了上面的凭证部分以使用双引号(而不是单引号),但这并没有解决问题。单引号是字符串文字-如果需要字符串插值,则需要在groovy中使用双引号 单引号表示没有变量扩展的字符串文字 请使用
用户名project.nexusUsername
密码project.nexusPassword
参考资料:问题在于如何在外部属性文件中指定属性。我对属性文件中的字符串值使用了双引号,这导致了身份验证失败。一旦我从外部属性文件中删除了双引号,我就能够发布到nexus 不正确的外部属性文件设置
someUsername="someuser"
someUsername=someuser
正确的外部属性文件设置
someUsername="someuser"
someUsername=someuser
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/"
}
}
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
}
}
}
}
这很有效 我将单引号修改为双引号,但问题很难是字符串插值问题;
mvn deploy:deploy file
是否与给定的url-s和cred一起工作?我可以用实际值切换变量,它工作得很好-整个想法是不要在build.gradle文件中使用实际字符串值-这根本不起作用。我假设我做错了什么,但需要弄清楚如何进一步调试。您是在哪里找到这些文档的?Gradle DSL参考难以搜索一些文档可在此处找到: