如何使用傳遞性依賴?

Spring Cloud Contract 外掛程式會新增任務,為您建立 Stub jar 檔。出現的一個問題是,當重複使用 Stub 時,您可能會錯誤地匯入該 Stub 的所有依賴項。當建置 Maven 構件時,即使您有幾個不同的 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

  • 排除消費者端的依賴項

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

如果在 producer 應用程式中,您將所有依賴項標記為可選,當您在另一個應用程式中包含 producer Stub 時(或當 Stub Runner 下載該依賴項時),由於所有依賴項都是可選的,因此它們不會被下載。

如何為 Stub 建立單獨的 artifactid

如果您建立單獨的 artifactid,您可以按照您希望的任何方式進行設定。例如,您可能會決定完全沒有依賴項。

如何在消費者端排除依賴項?

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