将重复的正则表达式提取到Spring Cloud Contract中的util类

时间:2019-01-28 17:20:14

标签: spring-cloud-contract

我有一个合同定义,这是其中的一部分:

...
queryParameters {
  parameter('postcode': $(
    client(ukPostcode()),
    server('PH16 5RU')
  )
...

在我的contract.groovy上方:

static String ukPostcode() {
    return Pattern.compile("(?i)^[A-Za-z]{1,2}[0-9R][0-9A-Za-z]? ?[0-9][ABD-HJLNP-UW-Z]{2}\$(?-i)").pattern()
}

这很好用,直到我开始在同一项目的另一个合同文件中需要ukPostcode()为止。我尝试过:

  • 在合同所在的文件夹中的CustomPatterns中使用静态方法在类CustomPatterns.groovy中创建类似类src/main/groovy并将其导入
  • src/main/javasrc/test/groovysrc/main/groovydf<-data.frame(list(id = c(1,2,3,4,5,6), household = c(1, 1, 1, 2, 2, 2), age= c(19, 19, 45, 2,15,50))` 等下创建相同的课程。

合同插件似乎在任何这些位置都看不到该类。

是否存在在合同文件之间共享某些方法(或常量)的正确方法?

编辑:这是一个单模块项目,仅为了解决此问题而使其成为多模块是不希望的。

1 个答案:

答案 0 :(得分:0)

文档https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.1.0.RELEASE/single/spring-cloud-contract.html#_extending_the_dsl

中介绍了所有内容

创建具有实用程序功能的单独jar,然后在生产者端和依赖者本身的consuner端的插件类路径中重复使用它就足够了。