[Spring] 스프링 프로젝트 디렉토리 구조(maven vs gradle)
스프링 프로젝트를 구성할때 가끔 고민되는 부분이 있다.
메이븐(maven)과 그래들(gradle)이다.
안드로이드 개발할때 언뜻 gradle을 보긴했지만 늘 모르는 채로 넘어가서 이참에 찾아보았다.
공통점
일다 둘다 빌드관리 툴이다.
빌드란 단순한 소스코드파일을 실행가능한 소프트웨어 산출물으로 만드는 과정이다.
소스코드파일에는 자바코드뿐만 아니라 그 안에 사용하는 다른 라이브러리도 있을 것이다.
이떄 그 라이브러리들도 컴파일하고, 패키징하는 과정을 빌드라한다.
컴파일은 컴퓨터가 이해할 수 있는 기계어로 번역하는 작업이다.
자바의 경우 자바가상머신(JVM)에서 실행가능한 바이트코드 형태인 클래스파일을 만든다.
빌드툴은 프로젝트를 진행하면서 라이브러리버전을 동기화하기 위해서 등장했다.
Maven이란?
초기에 사용되었던 Ant 다음으로 등장한 빌드관리툴
장점
-라이브러리 Dependency 관리기능
pom.xml에 디팬던시만 추가하면 알아서 관련 라이브러리를 다운받는다.
여려명이서 프로젝트작업을 진행할때 라이브러리 파일까지 주고받지 않아도 되서 라이브러리 관리가 편하다
-일관된 디렉토리 구조와 빌드프로세스
-메이븐 제공 플러그인 사용가능
Gradle이란?
Grooby를 이용한 빌드관리툴, Maven보다 늦게나온만큼 성능성,사용성이 더 뛰어나다.
현재 안드로이드 앱을 만드는데 필요한 안드로이드 스튜디오의 공식빌드 시스템
*DLS(Domain Specific Language)을 사용하고, 의존성기반 프로그래밍 언어를 위한 툴이다.
Gradle Wrapper를 이용해서 그래들이 설치되지 않은곳에서도 빌드가 가능하다
장점
-라이브러리 Dependency 관리기능
라이브러리의 패키지명,버전을 build.grade에 지정해서 자동으로 다운로드 가능,
라이브러리 버전충돌도 자동으로 관리해줌
-멀티프로젝트 : Repository내에 여러개의 하위프로젝트 구성이 가능하다
-유연성+확장성 : Groovy기반 스크립팅으로 다양한 기능을 직접구현가능, 플러그인추가 가능
결론 : Maven보다 Gradle을 쓰자.
아무래도 더 늦게 나온 최신기술이라 더 뛰어난 스펙을 가지고 있다.
gradle이 maven보다 좋은점
- maven을 쓰면 build라는 동적인 요소를 xml로 정의해야하는데 그럼 가독성이 떨어지고 어려우니 gradle을 쓰자!
- gradle은 동적인 빌드를 groovy 스크립트로 짤 수 있음
출처 : 차이점 및 특징
alliwannado-start.tistory.com/5