通过maven-publish在gradle中设置凭据

时间:2017-05-10 19:31:46

标签: gradle build.gradle

我正在使用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中使用双引号。

2 个答案:

答案 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