Study/Etc

Build Tool 이란?

꼽냥이 2021. 7. 2. 23:30
반응형

Build Tool 이란, 프로젝트 내에서 소스 코드를 가지고 실행 가능한 Application 을 자동으로 생성해 주는 도구이다. 빌드에는 소스 코드를 컴파일하고 링크 및 패키징을 통해 실행 가능한 형태로 변환하는 것이 포함된다.

 

기본적으로 빌드의 자동화는 소프트웨어 개발자가 다음과 같은 일상적으로 수행하는 다양한 작업을 스크립트화 하거나 자동화하는 행위로 볼 수 있다.

  • Downloading Dependencies
  • Compiling Source Code into Binary Code.
  • Packaging that Binary Code.
  • Running Tests.
  • Deployment to Product System.

그렇다면, 이러한 빌드 툴은 왜 사용하는 것일까?

소규모의 프로젝트에서는 위와 같이 의존성이 있는 라이브러리나 API 를 직접 설치하고, 소스 코드를 빌드하고 실행하는 것이 큰 문제가 되지 않는다. 하지만 프로젝트의 규모가 커지고, 소스 코드가 방대해질 경우에 각각의 라이브러리들을 일일히 설치하고 사용하는 것은 프로젝트를 수행함에 있어 불필요한 업무의 비중이 높은 것으로 생각될 수 있다. 개발자는 이러한 불필요한 업무를 하지 않기 위해, 자동으로 의존성을 관리하고 소스를 빌드할 수 있는 도구를 사용하는 것이다.

 

Gradle / Maven

그럼 Java Application 에서 사용하는 Build Tool 은 무엇이 있을까? 대표적으로 Ant, Gradle, Maven 이 있다.

이 중 내가 비교할 것은 Gradle 과 Maven 이다. Ant 는 초기 Java 의 빌드 툴이고, 이를 보완해서 등장한 것이 Maven 이기 때문이다.

 

우선, Maven 은 pom.xml 을 이용해 정형화된 빌드 시스템을 제공한다. 또한 프로젝트에 대한 정보를 제공하고 개발 가이드라인을 제공한다. 물론 Build Tool 이기에, 새로운 기능을 쉽게 설치하고 업데이트할 수도 있다.

다른 Build Tool 인 Gradle 은 Maven 에 비해 최근 출시된 Tool 로, Ant 와 Maven 의 장점을 모아서 개발되었다고 한다. Build 라는 동적인 요소를 XML 로 정의하는 것에는 설정한 내용의 가독성이 떨어진다거나 의존관계가 복잡한 경우 등의 한계가 있었다. Gradle 은 Maven 과 달리 Groovy 를 사용하기 때문에 동적인 빌드의 경우 Groovy 스크립트로 플러그인을 호출하거나 코드를 직접 짤 수 있다. 또한, 성능적으로도 차이가 있는데 Gradle 이 Maven 에 비해 최대 100배 빠른 성능을 보여준다고 한다.

 

Gradle 의 단점이라고 한다면, Groovy 문법에 대해 새롭게 공부를 해야 한다는 점으로 볼 수 있을 것이다. 하지만 개발자로서 새로운 것을 배우는 것은 항상 거쳐가야 하는 단계라고 생각을 하기도 하고, 굳이 더 좋은 Gradle 이 있는데 Maven 을 사용해야 할 이유도 없어 Gradle 을 일반적으로 사용하게 될 것 같다.