새소식

반응형
Java/Spring

메이븐(Maven)과 그래들(Gradle)

  • -
반응형

메이븐(Maven)

자바 프로젝트의 빌드(Build)를 자동화 해주는 빌트 툴이며, 자바 프로젝트 라이브러리 관리 도구

여기서 빌드란 쉽게 말해 우리가 작성한 소스코드(Java), 프로젝트에서 사용한

각각의 파일 및 자원(.xml, .jar, .properties)을 JVM이나 WAS가 인식할수 있도록 패키징 하는 과정 및 결과물이다.

이러한 빌드를 하기 위해서 Maven을 사용하여 프로젝트 라이브러리 및 관리도구로 사용된다.

Maven은 필요한 라이브러리를 특정문서(pom.xml)에 정의해 놓으면 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 동작할때 필요한 다른 라이브러리까지 관리하여 자동으로 다운로드 해준다.

 

POM(Project Object Model)

- pom.xml이란 Maven을 이용하는 프로젝트의 root에 존재하는 xml 파일이다.

- 프로젝트의 의존성 관리를 위한 xml 파일이다.

pom.xml 파일 내용을 보면

- modelVersion : POM model의 버전

- parent : 프로젝트의 계층 정보

- groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정한다.

- artifactId : 프로젝트 빌드시 파일 대표이름 이다.

- version : 프로젝트의 현재 버전, 프로젝트 개발 중일 때는 SNAPSHOT을 접미사로 사용.

- packaging : 패키징 유형(jar, war, ear 등)

- name : 프로젝트 이름

- description : 프로젝트에 대한 간략한 설명

- dependencies : dependencies태그 안에는 프로젝트와 의존 관계에 있는 라이브러리들을 관리 한다.

내가 필요한 라이브러리를 dependencies 사이에 넣는다.

 

그래들(Gradle)

- Gradle은 Grooby를 이용한 빌드 자동화 시스템이다.

- 안드로이드 앱의 공식 빌드 시스템이다.

- 빌드 속도가 Maven에 비해 10~100배 가량 빠르다.

- JAVA, C/C++M, Python 등을 지원

- 빌드툴인 Ant Builder와 Grooby 스크립트 기반으로 만들어져 기존 Ant의 역할과 배포 스크립트 기능을 모두 사용 가능

 

* Grooby
Grooby는 Java 가상 머신에서 실행되는 스크립트 언어이다. Java 가상머신에서 동작하지만 Java와는 달리
소스코드를 컴파일 할 필요는 없습니다. Grooby는 스크립트 언어이고, 소스 코드를 그대로 실행한다.
또한 Java와 호환되고, Java 클래스 파일을 그대로 Grooby 클래스로 사용할 수 있습니다.
Java 문법과 유사하여 빌드 처리를 관리할 수 있는 면에서 Gradle은 Java 개발자가 사용하기에 최고의 빌드관리도구다.

 

기존 메이븐의 경우 XML파일인 pom.xml로 라이브러리를 정의하고 활용하도록 되어 있으나,

Gradle의 경우 별도의 빌드 스크립트를 통해 어플리케이션 버전, 라이브러리 등을 설정한다.

Gradle은 Grooby 스크립트 언어로 구성되어 있기에 XML과 달리 변수선언, if, else, for 등 로직이 구현가능하다.

 

 

 

 

메이븐(Maven)과 그래들(Gradle)의 차이

1. 스크립트 길이와 가독성면에서 그래들이 우세하다.

메이븐은 프로젝트가 커질수록 빌드 스크립트와 라이브러리 때문에 내용이 엄청 길어진다.

반면에 그래들은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성이 가능하다.

 

2. 빌드 시간이 그래들(Gradle)이 더 빠르다.

그래들은 캐시를 사용하기 때문에 테스트 반복 시 차이가 더 커진다.

 

반응형

'Java > Spring' 카테고리의 다른 글

Spring Filter  (0) 2022.04.27
Dynamic Web Project 만들기 1 - 프로젝트 생성  (0) 2022.04.26
Thymeleaf 와 JSP  (0) 2022.04.08
서블릿(Servlet), 서블릿 컨테이너(Servlet Container)  (0) 2022.04.07
HTML 과 JSP 차이  (0) 2022.04.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.