👀 목차
우리회사는 이커머스 서비스 프로젝트를 운영하는 회사이다.
프로젝트 구조는 멀티 프로젝트 구조로 되어있다.
웹 서비스같이 대규모인 어플리케이션에서는 멀티 프로젝트구조가 쉽고 효율적으로 관리하기위해 사용된다.
하나의 Main 이라는 "루트 프로젝트"안에 여러개의 하위프로젝트 "서브 프로젝트 or 라이브러리" 구조이다.
하위 프로젝트는 독립적을 개발 및 테스트가 가능하고 서로 다른 프로젝트를 의존할 수 있다.
빌드툴은 Gradle를 사용하고 있으며, Gradle은 이런 멀티 프로젝트 빌드를 지원한다. (Maven도 가능)
[TIL] 빌드 시 에러: cannot find symbol
ServiceImpl 비즈니스단에서 OrderUtils 파일을 사용하기위해 import했고 빌드를 하니 cannot find symbol 이라고 뜨면서 OrderUtils import를 찾지 못한다했다.
컴파일오류도 안뜨고, import 도 잘 들어가있는데 왜요?
내가 작업하고 있는 ServiceImpl은 sales 하위 프로젝트였고, OrderUtils 는 order 하위 프로젝트였다.
그래도 프로젝트도 의존할 수 있는데..하면서 sales 프로젝트의 build.gradle 파일을 열어보니 공통냄새나는 프로젝트만 의존하고 있었다. 하하 로컬에서 슬쩍 'order' 프로젝트를 하니 성공적으로 빌드를 할 수 있었다. 그러나 어떠한 사이드이펙트가 올지몰라 내 로컬에서만 확인해보았다.
// sales 서브 프로젝트 build.gradle
dependecies{
compile project('index')
compile project('common')
}
내가 생각한 찐 라이브러리는 외부에 공개되어서 내 프로젝트에 추가해서 사용하거나 확장할때 사용하는 라이브러리다.
멀티 프로젝트에서 사용하는 서브 프로젝트도 라이브러리라고 부르던데?!
멀티 프로젝트 구조에서 하위 프로젝트를 라이브러리라고 부르는건 개발내에서 사용하는 용어로써, "독립적으로 빌드되고 다른 프로젝트에서 사용되는 코드 모음을 의미한다"
이렇게 상황에 따라 라이브러리라고 부르는걸 배웠다.
자 이제 sales프로젝트에서 의존성관계이지 않은이상 orderUtils를 사용하지 못하는걸 알았으니! 개발하러 가자~😉