我该如何处理传递依赖?

Spring Cloud Contract 插件会为您创建存根 JAR 文件所需的任务。出现的一个问题在于,当重用存根时,您可能会错误地导入该存根的所有依赖项。在构建 Maven 艺术品时,尽管您有多个不同的 JAR 文件,但它们都共享一个 pom.xml 文件,如下清单所示:spring-doc.cadn.net.cn

├── 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
├── ...
└── ...

有三种处理这些依赖项的方法,以避免与传递依赖项相关的问题:spring-doc.cadn.net.cn

如何将所有应用依赖项标记为可选?

如果在 producer 应用中,您将所有依赖项标记为可选的,那么当您在另一个应用中包含 producer 占位符(或当这些占位符由 Stub Runner 下载时),由于所有依赖项均为可选,它们将不会被下载。spring-doc.cadn.net.cn

我该如何创建一个独立的artifactidfor the Stubs?

如果您创建一个独立的 artifactid,您可以按自己希望的方式进行配置。例如,您可能决定完全不依赖任何其他组件。spring-doc.cadn.net.cn

我如何在消费者端排除依赖?

作为消费者,如果您将存根依赖项添加到类路径中,您可以显式排除不需要的依赖项。spring-doc.cadn.net.cn