티스토리 뷰

⚒ 빌드 관리 도구(Build Tool)

Maven과 Gradle은 모두 빌드 관리 도구이다.

빌드 관리 도구는 빌드와 관리 도구로 나누어질 수 있어보인다. 그렇다면 빌드란 무엇일까?

 

💒 빌드(Build)

빌드는 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 말한다.

즉, 우리가 작성한 소스코드(.java파일), 프로젝트에서 쓰인 각각의 파일 및 자원(.xml, .jpg,)을 jvm이나 톰캣같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물을 일컫는다.

 

예를 들면, java 프로젝트를 진행하면 개발자가 작성한 A.java와 여러 가지 정적 파일 등에 해당하는 resource가 존재한다.

 

빌드를 한다면 소스코드를 컴파일 해서 .class로 변환하고 resource를 .class가 참조할 수 있는 적절한 위치로 옮기고 META-INF와 MANIFEST.MF들을 하나로 압축하는 과정을 의미한다.

 

👩‍💻빌드 관리 도구(Build Tool)

빌드의 정의가 그렇다면, 빌드 도구란 무엇일까?

 

빌드 도구란, 소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데,

빌드 관리도구는 사용자가 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리한다.

 

빌드 관리도구는 다음과 같은 작업을 수행한다.

  1. 종속성 다운로드 - 전처리(Preprocessing)
  2. 소스코드를 바이너리 코드로 컴파일(Compile)
  3. 바이너리 코드를 패키징(Packaging)
  4. 테스트 실행(Testing)
  5. 프로덕션 시스템에 배포(distribution)

빌드 툴로는 Ant, Maven, Gradle 등이 있다.


1. 메이븐(Maven)

 

Maven이란?

  • 아파치 메이븐은 자바용 프로젝트 관리 도구이다.
  • 아파치 Ant의 대안으로 만들어졌다.
  • 아파치 라이센스로 배포되는 오픈 소스 소프트웨어이다.
  • 수많은 라이브러리들을 관리해주는 도구입니다.
  • 특징적인 점은 그 라이브러리들과 연관된 라이브러리들까지 거미줄처럼 모두 연동이돼서 관리가 된다.

즉, 메이븐은 네트워크를 통해 연관된 라이브러리까지 같이 업데이트를 해주기 때문에 사용이 편리합니다.

 

POM - Project Object Model

Maven의 기능을 이용하기 위해 POM이 사용됩니다.

POM은 약자 이름 그대로 Project Object Model의 정보를 담고 있는 파일입니다.

pom.xml에서 주요하게 다루는 기능들은 아래와 같습니다.

  • 프로젝트 정보 : 프로젝트의 이름, 라이센스 등
  • 빌드 설정 : 소스, 리소스, 라이프사이클별 실행한 플로그인 등 빌드와 관련된 설정
  • 빌드 환경 : 사용자 환경 별로 달라질 수 있는 프로파일 정보
  • pom 연관 정보 : 의존 프로젝트(모듈), 상위 프로젝트, 포함하고 있는 하위 모듈 등

2. 그래들(Gradle)

 

Gradle이란?

  • 빌드, 프로젝트 구성/관리, 테스트, 배포 도구
  • 안드로이드 앱의 공식 빌드 시스템
  • 빌드 속도가 Maven에 비해 10~100배 가량 빠름
  • JAVA, C/C++M Python 등을 지원
  • 빌트툴인 Ant Builder와 Groovy 스크립트 기반으로 만들어져 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용
Groovy?
Groovy는 Java 가상 머신에서 실행되는 스크립트 언어 입니다. Java 가상 머신에서 동작하지만,
Java와는 달리 소스 코드를 컴파일 할 필요는 없습니다. 
Groovy는 스크립트 언어이고, 소스 코드를 그대로 실행합니다. 
또한 Java와 호환되고, Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있습니다.
Java 문법과 유사하여 빌드 처리를 관리할 수 있는 면에서 
Gradle은 Java 개발자가 사용하기에 최고의 빌드관리도구이지 않을까 싶습니다.

 

 

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

Gradle의 경우 별도의 빌드 스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리 등의 항목을 설정할 수 있습니다.

Grooby 스크립트 언어로 구성되어 있기에 XML과 달리 변수선언, if, else, for등의 로직이 구현가능하며 간결하게 구성 가능합니다.

'Spring' 카테고리의 다른 글

[Spring] - root-context.xml, servlet-context.xml, web.xml  (0) 2024.01.15
[Spring] Spring과 Spring Boot  (0) 2024.01.15