Spring과 Spring Boot를 공부하던 중 gradle과 maven을 알게 되었습니다. 익히 들어서 gradle과 maven 이 빌드 관리 도구인 것이라는 것은 알고 있지만, 자세한 개념은 파악하지 못해 이번에 공부하면서 각각의 개념과 장단점에 대해서 알아보고 기록하고자 한다.
📌 빌드 관리 도구란?
- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이다.
- 애플리케이션을 개발하면서, 개발에 필요한 다양한 외부 라이브러리들을 다운로드하고, 해당 라이브러리를 사용하여 개발해야 하는 일이 많다. 이때 외부의 라이브러리들을 각각 다운로드할 필요 없이, 빌드 도구 설정 파일에 필요한 라이브러리 종류와 버전, 종속성 정보를 명시하여 필요한 외부 라이브러리를 설정 파일을 통해 자동으로 다운로드해주고 이를 편히 관리해주는 도구를 말한다.
📌 Gradle 이란?
- 빌드 속도가 Maven에 비해 최대 100배가량 빠르다.
- 빌드, 프로젝트 구성 / 관리, 테스트, 배포 도구
- 안드로이드 앱의 공식 빌드 시스템
- JAVA, C/C++ M Python 등을 지원한다.
- 빌트 툴인 Ant Builder와 Groovy 스크립트 기반으로 만들어져 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용 가능
- 라이브러리 추가할 때 Maven 보다 코드가 훨씬 간결하다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
}
📌 Maven 이란?
- Maven 같은 경우는 Spring Project에서 pom.xml이라는 이름을 쓴다.
- 자바용 프로젝트 관리 도구이다.
- Apache의 Ant 대안으로 만들어졌다.
- 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
📌 결론
- gradle의 빌드 스크립트는 groovy라는 언어로 작성해야 하므로 maven의 pom.xml 에 비해 친숙하진 않지만 확장성이 뛰어나다. maven 은 프로젝트가 커질수록 빌드 스크립트의 내용이 길어지고 가독성이 떨어지는 반면, gradle 은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성할 수 있다.
- maven의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle 은 설정 주입 방식으로 이를 해결한다. 그래서 gradle 은 멀티 프로젝트에 매우 적합하다.
따라서 build 도구로 maven 보다 gradle을 사용하는 것이 좋겠다고 생각한다.
'Spring' 카테고리의 다른 글
[Java] 롬복(Lombok) 설명 & 정리 (0) | 2023.05.16 |
---|---|
[Spring] IoC 컨테이너 ? @Bean ? 스프링 빈 ? (0) | 2022.06.24 |
[Spring] Spring Boot 란 ? (0) | 2022.06.24 |
[Spring] Spring? SpringFramework? (0) | 2022.05.26 |