일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- java
- 팩토리얼
- 복합대입연산자
- 데이터타입
- switch문
- 삼항 연산자
- #Java
- if문
- 알고리즘
- 논리연산자
- switch-case문
- plusgame
- 로또 프로그램
- 피보나치수열
- #java_festival
- 변수의특징
- #이차원배열
- 증감연산자
- 비교연산자
- JAVA기초
- 연산자
- java조건문
- 이진수
- 별찍기
- #완전수구하기
- 소인수분해
- #알고리즘
- else if문
- 2차원배열
- for문 369게임
- Today
- Total
숭어 개발 블로그
[Spring] Maven / Gradle 차이 특징 본문
Maven과 Gradle은 모두 빌드 관리 도구이다.
빌드도구란?
ex) Ant, Maven, Gradle
- 소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 빌드 관리 도구는 필요한 라이브러리들을 자동으로 관리한다.
- 종속성 다운로드
- 소스코드를 바이너리코드로 컴파일
- 바이너리 코드를 패키징
- 테스트 실행
- 프로덕션 시스템에 배포
대규모 프로젝트에선 빌드프로세스를 수동으로 호출하는게 실용적이지 않지만 빌드도구를 사용하면 이를 일관되게 할 수 있다.
Maven이란?
- Maven은 Java전용 프로젝트 관리 도구로, 라이프사이클 관리 목적 빌드 도구이며, Apache Ant의 대안으로 만들어졌다.
- Maven은 pom.xml에 정의하는데 이를 프로젝트 모델링이라고한다. [ pom(Project Object Model) ]
Maven 특징
1) LifeCycle
- 미리 정해진 빌드순서
- 메이븐은 프레임워크이기 때문에 동작 방식이 정해져있고, 미리 정의하고 있는 빌드 순서가 있다. 이를 라이프사이클(Lifecycle)이라 한다
- 필요한 라이브러리를 특정문서(pom.xml)에 정의만 해주면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리 작동에 필요한 하위 라이브러리까지 네트워크를 통해서 자동으로 다운받아준다.
- 중앙 저장소를 통한 자동 의존성 관리를 한다.
- 중앙 저장소는 라이브러리를 공유하는 파일서버이고, 저장소는 아파치재단에서 운영관리하는 저장소를 사용할 수도 있고 별도의 사설 저장소를 사용할 수도 있다.
- 프로젝트 전체내용에 대한 기술 및 설정을 담당하는 pom과 라이브러리관리에 대한 dependency / repository 관리 모델 그리고 컴파일, 테스트, 패키징 등의 빌드생명주기를 다루는 라이프사이클 및 관련 플러그인들과의 연동을 다루는 부분으로 구성된다.
Gradle이란?
- Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴이며, Ant Builder와 Groovy Script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립의 기능을 모두 사용 가능하며 SpringBoot 와 Android에서 사용 된다.
- Groovy : JVM에서 실행되는 스크립트 언어이다. JVM에서 동작하지만 소스코드를 컴파일 할 필요없고 Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다.
Java 문법과 유사하여 빌드 처리를 관리할 수 있다.
- 빌드 속도가 Maven에 비해 10~100배 가량 빠르며, Java, C/C++, Python 등을 지원한다.
Gradle 특징
1. 가독성이 좋다
2. 재사용에 용이하다 : 설정 주입 방식(Configuration Injection)을 사용하므로 재사용성 용이
3. 구조적인 장점 : Build Script를 Groovy 기반의 DSL(Domail Specific Language)를 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있다
4. 편리함 : Gradle 설치 없이 Gradle wrapper를 이용하여 빌드를 지원한다.
5.멀티프로젝트 : Gradle은 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구이다.
6. 지원 : Maven을 완전 지원하다.
Maven과 Gradle의 차이
- 가독성 면에서 Gradle 이 우세하다.
- 빌드와 테스트 실행 결과 Gradle이 더 빠르다. ( Gradle 은 캐시를 사용하므로 테스트 반복 시 시간 차이가 더 커진다.)
- 의존성이 늘어날 수록 스크립트 품질의 차이가 커진다 : Maven은 멀티프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속 받아야하지만, Gradle은 설정 주입 방식을 사용하므로 멀티프로젝트에 적합하다.
결론 : Gradle 좋다!
'Spring' 카테고리의 다른 글
[Spring] jsp 에서 EL식으로 다양한 영역 데이터 출력 (0) | 2023.08.01 |
---|---|
[Spring] 스프링 환경설정 (3) | 2022.10.18 |
[Spring] 게시판 만들기 (2) _< 게시글 불러오기 > (1) | 2022.10.14 |
[Spring] 게시판 만들기 (1) _< 필요한 파일 생성 > (1) | 2022.10.06 |
[Spring] Spring 이란? & 동작 흐름 (0) | 2022.09.26 |