發布憑證範例
版本 8.13
您可以使用支援 Gradle 的 IDE 開啟此範例。 |
此範例展示了如何在使用 專案屬性 將 Artifact 發布到 Maven 儲存庫時使用憑證。這種方法讓您可以將敏感配置資訊保留在專案的原始碼之外,並僅在需要時注入。
maven-repository-stub
目錄中的程式碼建置了一個用於 stub Maven 儲存庫的外掛,以示範身份驗證流程。它預期伺服器 stub 上有以下硬編碼的憑證
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
,它會立即告訴您缺少什麼,而無需執行建置。憑證可以而且應該與專案來源分開保存,並且只有需要發布 Artifact 的人員知道,可能由 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 屬性使用者手冊章節。