Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

최근 모던 빌드툴에 비해 메이븐은 설정이 복잡하고 어렵습니다. 그래서 스프링을 웹 프레임웍으로 선택하였다고하면프레임워크로 선택을 하였으면,

스프링을 사용하는 요소만큼은 단순하게 의존성을 셋팅할 필요가 단순해질필요가 있습니다.

원문문서 : https://spring.io/guides/gs/multi-module/


의존성 단순화:

Spring Boot INITIALIZER 을 이용한 Spring 의존요소 단순화

...

  • 모든 프로젝트가 공통으로 참조하는것 ( 오픈소스 공통 라이브러리)
  • 특정 프로젝트만 참조하는것 ( 특정 로컬 참조)
  • 그룹 프로젝트가 공통으로 참조하는것 ( 내부공통 라이브러리)
BadGood

의존성 관계가 스파게티가 되는 일반적인 예입니다.


Good Case

Image Modified



여기서 의존성 단순화 목표는 , 우리가 사용할 스프링요소에대해서 크게 신경쓰지 않는 것입니다.

...

  • 자신의 부모를 (parent)를 지정합니다. 그룹은 부모에서 정해졌기때문에 지정할 필요없습니다.
  • 부모에서 어떠한 버젼의 요소를 사용할것인가 이미 정리가 되었기때문에 , 추가 사용모듈에대해 버젼지정을 하지 않습니다.
  • 하위 모듈에서 만약 버젼을 한번 지정하기 시작하면, 다른 하위모듈에서도 지정하기때문에 서로 다른 버젼이되어 작동될수 있습니다.



Note

복잡하게 얽혀있는 오픈소스 디펜던시를 메이븐에 셋팅하려고하니 노하우와 경험이 필요해 보입니다.

시간이되면 Gradle과 양방향 호환되는 방향으로 셋팅하고 싶지만 ( 기존 대부분의 인프라가 메이븐으로 설정되어 있음 )

메이븐에서 계속 깔금한 구조를 개선및 시도중에 있습니다.