JAVA 빌드 툴

wellsbabo·2023년 7월 14일
0
post-thumbnail

빌드 툴?

빌드 툴이란 소프트웨어 개발에 있어서 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구입니다.
빌드 과정을 자동화하여 관리하고, 외부의 소스 코드(라이브러리)를 자동 추가 및 관리해주기도 합니다.

빌드 툴은 개발자가 스크립트를 작성하여 다양한 옵션을 주고 작업을 수행할 수 있게 합니다.

빌드: 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정
컴파일: 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정. 빌드의 단계 중 컴파일이 포함

빌드 툴을 사용하는 이유

다양한 라이브러리들이 생겨나면서, 개발을 진행할 때 라이브러리는 하나하나 관리하는 과정이 힘들어졌습니다.
직접 다운로드하고 추가하게 되면 다운로드한 파일이 제대로 된 파일인지, 악성파일은 아닌지 확인하기도 어렵습니다.
또한 빌드 과정에서 어떤 순서로 빌드할지, 각 라이브러리들의 의존성은 어떤지를 다 찾아서 빌드를 실행시키기가 매우 어려워졌습니다.
이러한 문제점들을 해결하기 위해 빌드 툴이 나오게 되었습니다.

자바의 빌드 툴

자바의 빌드 툴은 Ant, Maven, Gradle이 순서대로 나왔습니다. 각 빌드 툴은 이전 빌드 툴의 단점을 보완하기 위해 나왔으며, 그렇기에 현재는 Gradle을 가장 많이 사용하고 있습니다.

Apache Ant

처음에 가장 널리 사용되던 빌드 툴입니다.
이클립스에 자동으로 탑재되어 있고, XML 스크립트를 기반으로 하고 있습니다.
하지만 이후에 나온 빌드 툴들과 달리 자동으로 라이브러리를 업데이트하는 기능이 없습니다.

특징

  1. 유연성: 코딩 규칙이나 프로젝트 구조를 강조하지 않는다.
  2. Ant의 하위 프로젝트인 Apache Ivy를 통해 의존성 관리가 가능하다.

단점

  1. 코딩 규칙이나 프로젝트 구조를 강조하지 않기 때문에, 프로젝트를 빌드할 때 개발자가 모든 명령을 스스로 작성해야 한다.
  2. 규칙이 없기 때문에 다른 개발자가 작성한 Ant 빌드 파일을 이해하기 어렵다.

Maven

Ant 이후에 나온 빌드 툴로, 자동으로 라이브러리와 그 의존성을 관리해줍니다.
XML 스크립트를 기반으로 작성하며, POM.xml 파일로 의존성을 관리합니다.
Maven에는 라이프 사이클 개념이 도입되어 빌드 순서를 정의할 수 있습니다.

특징

  1. 규칙성이 있다.
  2. 정해진 라이프사이클에 의해 작업을 수행하며, 전반적인 프로젝트 관리 기능을 포함하고 있다.

단점

  1. 엄격한 프로젝트 구조를 규정하여 Ant에 비해 유연성이 떨어진다
  2. 정적인 데이터를 저장하는 xml 파일이기 때문에 동적인 정의가 어렵다

Gradle

가장 최근에 나온 빌드 툴로 그루비라는 문법을 사용합니다.
Build.gradle에 스크립트를 작성하며 XML 기반 스크립트에 비해 관리가 편합니다.
현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있기도 합니다.

특징

  1. xml의 구조적인 틀에서 벗어나 간결한 정의가 가능하다
  2. 그루비 언어를 기반으로 동적인 정의가 가능하다.

최근 트렌드

Ant -> Maven -> Gradle 순서대로 이전 것의 단점을 보완하기 위해 나왔기 때문에 Gradle이 가장 좋은 성능을 가지고 있는 것은 맞습니다.
하지만 아직까지 Gradle을 사용하기 위해 새로 학습해야한다는 단점과 지금까지 Maven으로 작성된 프로젝트들이 상당히 많다는 점 때문에 현재까지도 Maven의 사용률이 높다고 합니다.


아래 거인(고수)들의 도움을 매우매우 많이 받아서 작성한 글입니다.
참조링크 1
참조링크 2

0개의 댓글