發佈憑證範例
版本 8.7
您可以使用 IntelliJ 原生匯入器 或 Eclipse Buildship 在 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 屬性使用者手冊章節。