gradle - 使用 Gradle 上传到 Maven Central,避免未知属性错误

标签 gradle

我正在尝试将我的第一个 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/

相关文章:

java - 如何使用 Gradle 在我的 JAR 中包含一个依赖项?

java - Gradle 找不到 Google Protobuf 包

gradle - gradle 构建如何知道哪些模块已更改?

java - Android库模块中的依赖

android - Cordova 构建 - 无法解析 com.android.tools.build :gradle:1. 5.0

intellij-idea - 具有多个 gradle 子项目的 IntelliJ IDEA

command-line - 安装Gradle 2.5时发生异常

apache - 在Ubuntu 17.04中获取错误 “Reference air.sdk.path.linux.3.9 not found ”

android - 使用 TFS 和 Gradle 构建 Android 项目

gradle - testCompiler 任务之间的循环依赖