Как выполнять локальные контракты с программой-заглушкой Spring Cloud Contract - PullRequest
0 голосов
/ 16 января 2020

Я определил некоторые контракты Spring Cloud, которые я упаковал в банку, используя gradle verifierStubsJar. Я хотел бы запустить заглушки в этой банке с банкой заглушки Spring Cloud Contract *1003*. Я не хочу публиковать sh банку с заглушками в хранилище артефактов, таких как Artifactory или локальное хранилище Maven. Я просто хочу запустить заглушки. Как передать местоположение банки, содержащей мои окурки, банке с заглушкой?

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Если вы используете gradle generateClientStubs:

curl -Lo stub-runner.jar https://search.maven.org/remotecontent?filepath=org/springframework/cloud/spring-cloud-contract-stub-runner-boot/2.2.1.RELEASE/spring-cloud-contract-stub-runner-boot-2.2.1.RELEASE.jar

java -Djava.security-egd=/dev/./urandom -Dstubrunner.repositoryRoot=stubs://file://absolute/path/to/build/stubs -Dstubrunner.ids=com.company-contract:stubs:8081 -Dstubrunner.stubs-mode=REMOTE -jar stub-runner.jar

Если вы используете gradle verifierStubsJar:

curl -Lo stub-runner.jar https://search.maven.org/remotecontent?filepath=org/springframework/cloud/spring-cloud-contract-stub-runner-boot/2.2.1.RELEASE/spring-cloud-contract-stub-runner-boot-2.2.1.RELEASE.jar

java -cp stub-runner.jar:build/libs/my-contract-stubs.jar -Djava.security-egd=/dev/./urandom -Dstubrunner.ids=com.company:my-contract:stubs:8081 -Dstubrunner.stubs-mode=CLASSPATH org.springframework.boot.loader.JarLauncher

Получено:

  • Когда используя gradle generateClientStubs, не забудьте указать ведущий sla sh в абсолютном URI для вашего каталога заглушек. например, stubs://file:///User/me/my-contracts-project/build/stubs.

  • Запускатель заглушек запускает сервер на порту 8080, поэтому вы должны запускать заглушки на другом порту. Вы можете переопределить порт, на котором запускается заглушка, с помощью обычного -Dserver.port.

0 голосов
/ 16 января 2020

Если вы прочитаете документы, вы найдете этот раздел https://cloud.spring.io/spring-cloud-contract/reference/html/project-features.html#features -stub-runner-stubs-protocol

Вместо того, чтобы выбирать окурки или определения контрактов из Artifactory / Nexus или Git, можно просто указать на местоположение на диске или в classpath. Это может быть особенно полезно в многомодульном проекте, где один модуль хочет повторно использовать заглушки или контракты из другого модуля без необходимости фактически устанавливать их в локальном репозитории maven или зафиксировать эти изменения в Git.

В Для достижения этого достаточно использовать протокол stubs: //, когда параметр репозитория root установлен либо в Stub Runner, либо в плагине Spring Cloud Contract.

В этом примере проект производителя был успешно встроенные и заглушки были созданы в папке target / stubs. В качестве потребителя можно настроить программу-заглушку для выбора заглушек из этого местоположения, используя протокол заглушки: //.

@ AutoConfigureStubRunner (stubsMode = StubRunnerProperties.StubsMode.REMOTE, repository Root = "заглушки: / / file: // location / to / the / provider / target / stubs / ", ids =" com.example: some-seller ")

Контракты и квитанции могут храниться в местоположении, где каждый производитель имеет собственную папку для контрактов и сопоставлений заглушек. В этой папке каждый потребитель может иметь свою собственную настройку. Чтобы заставить Stub Runner находить выделенную папку из предоставленных идентификаторов, можно передать свойство stubs.find-provider = true или системное свойство stubrunner.stubs.find-provider = true.

@ AutoConfigureStubRunner (stubsMode = StubRunnerProperties .StubsMode.REMOTE, репозиторий Root = "stubs: // file: // location / to / каталог / reports /", ids = "com.example: some-seller", properties = "stubs.find -roduction = true ")

...