发布凭据示例
版本 8.7
您可以在 IDE 中使用 IntelliJ 原生导入器 或 Eclipse Buildship 打开此示例。 |
此示例展示了使用 项目属性 将工件发布到 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 属性用户手册章节。