您可以使用 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 屬性使用者手冊章節