[ 메이븐(Maven) ]
- 자바 프로젝트를 위한 통합 빌드 툴 (Build Tool)
- 프로젝트, 라이브러리, 의존관리를 자동 관리해주는 프로젝트 관리 도구
- 빌드 과정의 프레임워크이자 자동화 시스템
빌드란 컴파일을 포함해 개발자가 짠 코드가 실제로 컴퓨터에서 실행되기 위한 모든 과정과 결과물을 말합니다. 이제까지 별도 빌드툴 설치 없이 이클립스에서 코드를 작성하고 실행할 수 있었듯 개발에 있어 필수적인 요소는 아닙니다.
다만 자동화된 빌드툴 없이 수동으로 빌드를 관리할 경우, 프로젝트가 커질 수록 개발자가 정상적인 빌드 과정을 위해 신경써야할 부분들이 엄청 늘어나게 됩니다. 또한 다른 사람들과 협업할 경우 이런 과정들을 한땀한땀 수동으로 맞춰주면서 작업해야하기 때문에 효율성도 줄어들고 예기치 못한 장애로 이어질 가능성도 높아지게 됩니다.
그래서 규모가 크고 구조가 복잡한 프로젝트에서는 이 구조를 자동으로 관리해줄 수 있는 빌드툴을 사용해 프로젝트를 진행하는 것이 일반적입니다. 자바 또는 스프링 프로젝트의 빌드툴로 가장 많이 쓰이는 것이 메이븐(Maven)이고, 요즘에는 그레이들(Gradle)이라는 빌드툴이 대체안으로 떠오르고 있다고 합니다.
메이븐과 같은 빌드툴은 전체 빌드 과정을 정형화해둔 프레임워크이기 때문에 일련의 작동 방식과 구조가 정해져 있습니다. 또한 여기서 많은 부분을 알아서 자동으로 처리해줍니다. 개발자는 빌드툴의 구조에 따라 개발자가 해야할 일부분만 처리해주면 됩니다. 따라서 빌드툴을 적용해 작성되고 배포된 프로젝트는 로컬의 개발환경에 좌우되지 않고 일관성 있는 기준을 가지기 때문에, 프로젝트가 커질 수록 효율성을 높여줍니다.
직접 빌드 기준을 만들어서 일련의 과정을 모두 컨트롤하는 것은 결국 아무런 프레임워크 없이 프로젝트를 진행하는 것과 같습니다. 잘 만들어진 프레임워크 사용은 대부분 백지 상태에서 시작하는 것 보다 효율적입니다. 어플리케이션 개발 뿐 아니라 빌드 과정 또한 마찬가지이며, 스프링 프레임워크를 사용해 개발을 효율적으로 하듯이 빌드툴을 이용해 빌드를 효율적으로 하는 것이죠.
그리고 메이븐을 사용할 경우 개발자가 라이브러리 관리를 따로 하지 않아도 된다는 큰 이점이 추가로 생깁니다.
만약 메이븐이 없다면 관련된 모든 라이브러리 파일(.jar)을 인터넷에서 다운 받아 직접 프로젝트 빌드 구조에 맞게 삽입해줘야하겠지만, 메이븐을 사용해 빌드시킨다면 메이븐의 글로벌 저장소에서 해당 라이브러리와 이 라이브러리가 내부적으로 사용하고 있는 다른 라이브러리들을 모두 자동으로 다운받아 개발자가 사용할 수 있도록 내부 환경을 셋팅해줍니다. 이를 메이븐의 의존성(Dependency) 관리라고 합니다. 이부분은 차차 더 자세히 살펴보도록 하겠습니다.
결론적으로 개발자는 실제 라이브러리 파일(.jar)을 직접 관리할 필요없이, "pom.xml" 파일만 잘 관리해주면 됩니다. 그냥 lib 폴더에 파일을 몰아넣으면 서로 간의 관계를 파악하기도 힘들고 버전 파악이 힘들 수도 있지만 이런 문제를 깔끔하게 해결해 주는 것이죠. 물론 의존성 설정 간의 간섭이나 충돌 등의 문제가 발생할 수 있어서 신경을 써야할 경우도 있습니다. 이후 글들에서 계속 알아가보도록 하겠습니다.
'▸Spring MVC > 기본 상식' 카테고리의 다른 글
스프링 의존 주입(DI)과 인터페이스 사용에 관하여 (4) | 2020.04.23 |
---|---|
스프링(Spring) MVC 동작 구조 및 스프링 컨테이너 (4) | 2020.03.15 |
스프링(Spring) 프로젝트의 폴더 구조 (3) | 2020.03.06 |
프레임워크와 라이브러리의 차이 (2) | 2020.02.26 |
댓글