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

ali*_*der 4 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/"
            }
        }
Run Code Online (Sandbox Code Playgroud)

更新 我更新了上面的凭据部分以使用双引号(不是单引号),但没有解决问题.单引号是字符串文字 - 如果需要字符串插值,则需要在groovy中使用双引号.

ali*_*der 10

问题是如何在外部属性文件中指定属性.我在属性文件中使用双引号作为字符串值,这导致身份验证失败.一旦我从外部属性文件中删除了双引号,我就能够发布到nexus了.

外部属性文件设置不正确

someUsername="someuser"
Run Code Online (Sandbox Code Playgroud)

更正外部属性文件设置

someUsername=someuser
Run Code Online (Sandbox Code Playgroud)

的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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作 - 希望这是有效的.

  • 您在哪里以及如何找到此文档?Gradle DSL 参考很难搜索 (3认同)