Извлечение повторяющегося регулярного выражения в класс util в Spring Cloud Contract - PullRequest
0 голосов
/ 28 января 2019

У меня есть определение контракта, вот его часть:

...
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/java, src/test/groovy, src/main/groovy и т. Д.

Контрактный плагин, похоже, не видит класс ни в одном из этих мест.

Есть ли правильныйспособ поделиться каким-либо методом (или константой) между файлами контракта?

РЕДАКТИРОВАТЬ: это проект с одним модулем, и сделать его многомодульным просто ради решения этой проблемы нежелательно.

1 Ответ

0 голосов
/ 01 февраля 2019

Все описано в документации https://cloud.spring.io/spring-cloud-static/spring-cloud-contract/2.1.0.RELEASE/single/spring-cloud-contract.html#_extending_the_dsl

Достаточно создать отдельный jar с функциями утилиты, а затем повторно использовать его в пути к классам плагина на стороне производителя и на стороне приемника в самих зависимостях.

...