我正在尝试将我的第一个 Gradle 项目上传到 Maven Central。我已关注 Sonatype's documentation为此并创建了一个 uploadArchives
生成元数据的任务。
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
...etc. etc.
该任务引用了两个属性,“ossrhUsername”和“ossrhPassword”,我应该在
gradle.properties
中定义它们。 ;但是,如果我没有 gradle.properties
使用这些属性,构建失败并出现错误,即使对于非 uploadArchives
任务。$ gradlew test
Could not get unknown property 'ossrhUsername' for object of type org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer.
我希望构建成功(当然,除了
uploadArchives
任务)而不必在 gradle.properties
中定义这些属性。文件。我该怎么做?
单独管理一个
pom.xml
会更简单吗?专门用于Maven Central上传?编辑 经鉴定potential duplicate是关于在哪里外部化凭据。我的问题是如何确保 Gradle 构建仍然成功执行,尽管凭证没有在
gradle.properties
中被外部化。 .我希望其他人能够克隆 repo 并执行 Gradle,而无需定义 OSSRH 凭证属性。
最佳答案
我没有直接引用属性,而是将属性名称作为字符串传递给 findProperty
,从而消除了错误。 API documentation表示此方法是“孵化”,但自 2.13 版以来一直存在。
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: findProperty('ossrhUsername'), password: findProperty('ossrhPassword'))
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: findProperty('ossrhUsername'), password: findProperty('ossrhPassword'))
}
关于gradle - 使用 Gradle 上传到 Maven Central,避免未知属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710659/