如何處理傳遞依賴?

Spring Cloud Contract 外掛增加了為你建立 stub jar 的任務。一個出現的問題是,當重用 stub 時,你可能會錯誤地匯入該 stub 的所有依賴項。構建 Maven artifact 時,即使你有幾個不同的 jar,它們都共享一個 pom.xml 檔案,如下所示:

├── producer-0.0.1.BUILD-20160903.075506-1-stubs.jar
├── producer-0.0.1.BUILD-20160903.075506-1-stubs.jar.sha1
├── producer-0.0.1.BUILD-20160903.075655-2-stubs.jar
├── producer-0.0.1.BUILD-20160903.075655-2-stubs.jar.sha1
├── producer-0.0.1.BUILD-SNAPSHOT.jar
├── producer-0.0.1.BUILD-SNAPSHOT.pom
├── producer-0.0.1.BUILD-SNAPSHOT-stubs.jar
├── ...
└── ...

有三種處理這些依賴項的可能性,以避免傳遞依賴問題

  • 將所有應用依賴標記為可選

  • 為 stub 建立單獨的 artifactid

  • 在消費方排除依賴項

如何將所有應用依賴標記為可選?

如果,在生產者應用中,你將所有依賴標記為可選,那麼當你在另一個應用中包含生產者 stub(或 Stub Runner 下載該依賴項時),由於所有依賴都是可選的,它們將不會被下載。

如何為 Stub 建立單獨的 artifactid

如果你建立了單獨的 artifactid,你可以按照你希望的任何方式進行設定。例如,你可以決定完全不包含任何依賴項。

如何在消費方排除依賴項?

作為消費者,如果你將 stub 依賴新增到類路徑中,你可以明確排除不需要的依賴項。