如何建置 Spring Cloud Contract

在 Windows 上複製儲存庫

在 Windows 上複製此專案時,Git 儲存庫中的某些檔案可能會超過 Windows 最大檔案路徑長度 255 個字元的限制,這可能會導致儲存庫簽出不正確(可能不完整)。

若要解決此問題,您可以將 core.longPaths 屬性設定為 true 或複製 Spring Cloud Contract 儲存庫。

若要將 core.longPaths 屬性設定為 true,您有三個選項

  • 為機器的所有使用者變更它(執行此操作需要管理員權限)

git config --system core.longPaths true
git clone https://github.com/spring-cloud/spring-cloud-contract.git
  • 為目前使用者變更它(不需要管理員權限)

git config --global core.longPaths true
git clone https://github.com/spring-cloud/spring-cloud-contract.git
  • 僅為此儲存庫變更(管理員權限取決於儲存庫要複製到哪裡)

git clone -c core.longPaths=true https://github.com/spring-cloud/spring-cloud-contract.git
您需要安裝所有必要的 Groovy 外掛程式,IDE 才能正確解析來源。例如,在 Intellij IDEA 中,同時安裝 Eclipse Groovy Compiler Plugin 和 GMavenPlus Intellij Plugin 外掛程式,即可正確匯入專案。
Spring Cloud Contract 建置 Docker 映像檔。請記得安裝 Docker。
如果您想要在離線模式下執行建置,您必須安裝 Maven 3.5.2+。

專案結構

以下清單顯示 Spring Cloud Contract 資料夾結構

├── config
├── docker
├── samples
├── scripts
├── specs
├── spring-cloud-contract-dependencies
├── spring-cloud-contract-shade
├── spring-cloud-contract-starters
├── spring-cloud-contract-stub-runner
├── spring-cloud-contract-stub-runner-boot
├── spring-cloud-contract-tools
├── spring-cloud-contract-verifier
├── spring-cloud-contract-wiremock
└── tests

以下清單描述專案結構中每個頂層資料夾

  • config:資料夾包含 Spring Cloud Release Tools 自動發佈流程的設定

  • docker:資料夾包含 Docker 映像檔

  • samples:資料夾包含測試範例以及用於建置文件的獨立範例

  • scripts:包含使用 Maven、Gradle 和獨立專案建置和測試 Spring Cloud Contract 的腳本

  • specs:包含 Contract DSL 的規格。

  • spring-cloud-contract-dependencies:包含 Spring Cloud Contract BOM

  • spring-cloud-contract-shade:外掛程式使用的 Shaded 相依性

  • spring-cloud-contract-starters:包含 Spring Cloud Contract Starter

  • spring-cloud-contract-spec:包含規格模組(包含契約的概念)

  • spring-cloud-contract-stub-runner:包含 Stub Runner 相關模組

  • spring-cloud-contract-stub-runner-boot:包含 Stub Runner Boot 應用程式

  • spring-cloud-contract-tools:適用於 Spring Cloud Contract Verifier 的 Gradle 和 Maven 外掛程式

  • spring-cloud-contract-verifierSpring Cloud Contract Verifier 功能的核心

  • spring-cloud-contract-wiremock:所有 WireMock 相關功能

  • tests:適用於不同訊息傳遞技術的整合測試

命令

若要建置核心功能以及 Maven 外掛程式,您可以執行以下命令

./mvnw clean install -P integration

呼叫該函數會建置核心、Maven 外掛程式和 Gradle 外掛程式,並依正確順序在獨立範例上執行端對端測試(適用於 Maven 和 Gradle)。

若要僅建置 Gradle 外掛程式,您可以執行以下命令

cd spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin
./gradlew clean build

實用腳本

我們提供一些實用腳本來建置專案。

若要平行建置專案(預設情況下,它使用四個核心,但您可以變更它),請執行以下命令

./scripts/parallelBuild.sh

若要使用八個核心,請執行以下命令

CORES=8 ./scripts/parallelBuild.sh

若要在不執行任何整合測試的情況下建置專案(預設情況下,這會使用一個核心),請執行以下命令

./scripts/noIntegration.sh

若要使用八個核心,請執行以下命令

CORES=8 ./scripts/noIntegration.sh

若要產生文件(適用於根專案和 Maven 外掛程式),請執行以下命令

./scripts/generateDocs.sh