MSA 를 구현하는 과정에서 각 서비스마다 공통적으로 사용되는 로직이 발견되었다.
이러한 공통 로직들을 라이브러리로 만들어 관리하는 것이 편하다고 판단하였고, 각각의 서비스에 공통 라이브러리를 적용하여 중복 코드를 줄여보고자 한다.
(이 과정에서 꽤 많은 시행 착오를 겪었기에 게시물로 기록해둔다.)
공통 로직을 만들 라이브러리 프로젝트를 생성한다.
만든 프로젝트에 위와 같이 공통적으로 사용되는 코드들을 추가해준다.
코드 작성이 끝났다면,
build.gradlew 에서 플러그인 항목에 위 두 줄을 추가해준다.
그리고나서 publish 관련 옵션들을 정의해준다.
초록색 네모 박스 안에는 원하는 명칭을 적어주면 된다.
빨간색 네모 박스는 gradle 특정 버전 이상부터 명시해주어야 한다. (해주지 않으면 오류 발생)
Gradle 메뉴에서 publishToMavenLocal 을 클릭하여 ./m2 경로로 발행해준다.
실제 .m2 폴더 안을 살펴보면 위와 같이 빌드된 라이브러리가 잘 올라간 것을 확인할 수 있다.
이제 실제 해당 라이브러리를 사용하는 프로젝트에서 만들었던 라이브러리의 GroupID와 ArtifactID, Version 을 적어서 추가시켜주고, repositories 에 mavenLocal() 옵션을 추가해준다.
마지막으로 컴포넌트 스캔을 라이브러리의 패키지명으로 적어주게되면 비로소 라이브러리를 사용할 수 있게 된다.
참고 자료
Gradle, SpringBoot, MavenPublish - Publication only contains dependencies and/or constraints without a version
I'm using maven-publish plugin in Gradle to publish my Spring Boot application jar. I run the usual task: ./gradlew artifactorypublish. However, the following error appeared, which I couldn't under...
stackoverflow.com
[Gradle] 라이브러리 만들고 사용하기(Maven Local Repository)
라이브러리 만들기
velog.io