如何处理传递依赖?

Spring Cloud Contract 插件添加了为您创建桩 jar 的任务。一个问题是,当重用桩时,您可能会错误地导入该桩的所有依赖项。当构建 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
├── ...
└── ...

有三种处理这些依赖项的可能性,以避免出现传递性依赖问题

  • 将所有应用程序依赖项标记为可选

  • 为桩创建一个单独的 artifactid

  • 在消费者端排除依赖项

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

如果在 producer 应用程序中,您将所有依赖项标记为可选,当您在另一个应用程序中包含 producer 桩(或当 Stub Runner 下载该依赖项时),那么,由于所有依赖项都是可选的,它们将不会被下载。

如何为桩创建一个单独的 artifactid

如果您创建一个单独的 artifactid,您可以按您希望的任何方式进行设置。例如,您可能决定完全不包含任何依赖项。

如何从消费者端排除依赖项?

作为消费者,如果将桩依赖项添加到类路径中,您可以显式排除不需要的依赖项。

© . This site is unofficial and not affiliated with VMware.