DSL Customization

此部分仅对 Groovy DSL 有效

正如本节后面部分中所示,您可以通过扩展 DSL 来定制 Spring Cloud 合约验证程序。

Extending the DSL

您可以为 DSL 提供您自己的功能。此功能的关键需求是维持静态兼容性。在本章的后面部分,您可以看到示例:

  • 使用 Gemini 创建包含可重复使用的类的 JAR。

  • 在 DSL 中引用这些类。

您可以在 here找到完整的示例。

Common JAR

以下示例显示了可以在 DSL 中重复使用的三个类。

{samples_url}/common/src/main/java/com/example/PatternUtils.java[PatternUtils] 包含消费者和生产者都使用的函数。

{samples_url}/common/src/main/java/com/example/ConsumerUtils.java[ConsumerUtils] 包含消费者使用的函数。

{samples_url}/common/src/main/java/com/example/ProducerUtils.java[ProducerUtils] 包含生产者使用的函数。

Adding a Test Dependency in the Project’s Dependencies

如需在项目的依赖项中添加测试依赖项,您必须先将 common jar 依赖项添加为测试依赖项。由于您的合同文件在测试资源路径上可用,因此 common jar 类会自动在您的 Groovy 文件中可见。以下 {samples_url}/producer/[example] 展示了如何测试依赖项。

Adding a Test Dependency in the Plugin’s Dependencies

现在,您必须添加插件的依赖关系,以便在运行时可以重复使用。

Referencing Classes in DSLs

您现在可以在您的 DSL 中引用您的类,如 {samples_url}/producer/src/test/resources/contracts/beer/rest/shouldGrantABeerIfOldEnough.groovy[以下示例所示]。

您可以通过设置 convertToYamltrue 来设置 Spring Cloud Contract 插件。这样,您不需要向使用 YAML 契约而非 Groovy 契约的使用者端添加带扩展功能的依赖项。