发布凭证示例
版本 8.14
您可以在支持 Gradle 的 IDE 中打开此示例。 |
此示例展示了如何使用项目属性在将制品发布到 Maven 仓库时使用凭证。这种方法允许您将敏感配置保存在项目源代码之外,并在需要时注入。
maven-repository-stub
目录中的代码构建了一个插件,用于模拟 Maven 仓库以演示认证流程。它期望在服务器模拟器上使用以下硬编码凭证
maven-repository-stub/src/main/java/com/example/MavenRepositoryStub.java
private static final String USERNAME = "secret-user";
private static final String PASSWORD = "secret-password";
在实际项目中,您的构建将指向您组织的私有仓库。
要发布的项目包含一些用于编译和分发为 Java 库的示例 Java 代码。Gradle 构建文件使用提供的凭证将发布注册到 Maven 仓库
build.gradle.kts
publishing {
publications {
create<MavenPublication>("library") {
from(components.getByName("java"))
}
}
repositories {
maven {
name = "mySecureRepository"
credentials(PasswordCredentials::class)
// url = uri(<<some repository url>>)
}
}
}
build.gradle
publishing {
publications {
library(MavenPublication) {
from components.java
}
}
repositories {
maven {
name = 'mySecureRepository'
credentials(PasswordCredentials)
// url = uri(<<some repository url>>)
}
}
}
凭证仅在需要执行相关任务时才会被构建要求提供 - 在此示例中,该任务是将制品发布到安全仓库。这使得您可以在不关心凭证的情况下构建项目。尝试运行 ./gradlew jar
,它会成功。运行 ./gradlew publish
,它会立即告诉您缺少什么,而无需执行构建。凭证可以并且应该保存在项目源代码外部,并且只由需要发布制品的人知道,也许通过 CI 服务器注入。
凭证值通过 Gradle 属性提供,可以通过多种方式传递给发布任务
-
通过命令行属性
$ ./gradlew publish -PmySecureRepositoryUsername=secret-user -PmySecureRepositoryPassword=secret-password
-
通过环境变量
$ ORG_GRADLE_PROJECT_mySecureRepositoryUsername=secret-user ORG_GRADLE_PROJECT_mySecureRepositoryPassword=secret-password ./gradlew publish
-
通过在
gradle.properties
文件中设置属性
mySecureRepositoryUsername=secret-user mySecureRepositoryPassword=secret-password
并运行
$ ./gradlew publish
敏感数据保存在项目源代码外部,因为 gradle.properties
文件可以放在用户的 ~/.gradle
目录中。
有关使用 Gradle 属性的更多信息,请参阅Gradle 属性用户手册章节。