토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 컨트랙트 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


Spring Cloud Contract 플러그인은 스텁stub jar를 생성하는 태스크를 추가한다. 이로 인해 한 가지 문제가 발생할 수 있는데, 스텁stub을 재사용할 때 의도치 않게 해당 스텁stub의 의존성을 모두 가져올 수 있다는 거다. 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
├── ...
└── ...

전이 의존성transitive dependecy 문제는 세 가지 방법으로 방지할 수 있다:

목차

7.12.1. 모든 애플리케이션 의존성을 Optional로 마킹하기

producer 애플리케이션에서 모든 의존성을 optional로 마킹하면, 다른 애플리케이션에서 producer 스텁stub을 추가해도 (또는 Stub Runner가 해당 의존성을 다운받아도), 모든 의존성이 optional이기 때문에 다운로드되지 않는다.

7.12.2. 스텁stub마다 artifactid 분리하기

artifactid를 별도로 분리한다면, 원하는 방식으로 세팅하면 된다. 예를 들면 의존성이 전혀 없도록 설정할 수도 있다.

7.12.3. 컨슈머consumer 쪽에서 의존성 제외시키기

컨슈머consumer는 클래스패스에 스텁stub 의존성을 추가할 때 원치 않는 의존성을 명시해 제외시킬 수 있다.


Next :
7.13. 컨트랙트로 스프링 REST Docs 스니펫을 만들고 싶어요
컨트랙트로 스프링 REST Docs 스니펫 생성하기

전체 목차는 여기에 있습니다.

<< >>

TOP