빌드 관리 도구

이재현·2024년 8월 5일

Java

목록 보기
15/15

프로젝트를 생성하고, 이것저것 코딩을 하다보면 보다 편하게 기능을 구현하기 위해서 라이브러리를 추가하면서 생기는 문제점들이 몇개 있었는데, 이번 기회에 확실하게 빌드 관리도구는 무엇을 하는 애들인지 알고 넘어가고자 작성해보려 한다.

🛠️ 빌드 관리 도구(Build Tool)

🏢 빌드(Build)

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

즉, 유저가 작성한 소스코드, 프로젝트에서 쓰인 각각의 파일 및 자원을 JVM이나 톰캣 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물을 말한다.

e.g.
Java 프로젝트의 A.java와 여러가지 정적 파일들에 해당하는 resource
소스코드를 컴파일해서 .class파일로 변환하는 것 / resource를 .class가 참조할 수 있는 위치로 변경하는 것 / META-INF와 MANIFEST.MF들을 하나로 압축하는 과정

🛠️ 빌드 관리도구(Build Tool)

소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하는데, 이를 빌드 관리도구가 사용자가 관리할 필요없이 필요한 라이브러리들을 자동으로 관리한다.

자세하게 하는 일은 다음과 같다.

  • 종속성 다운로드 – 전처리(Preprocessing)
  • 소스코드를 바이너리코드로 컴파일(Compile)
  • 바이너리 코드 패키징(Packaging)
  • 테스트 실행(Testing)
  • 프로덕션 시스템에 배포(Distribution)

이러한 빌드 관리도구는 Ant, Maven, Gradle이 있다.




🪶 Maven

Java 전용 프로젝트 관리도구로, Life 사이클 관리 목적 빌드 도구이다.

Apach Ant의 대안으로 만들어 졌으며, 아파치 라이선스로 배포되는 오픈소스 소프트웨어이다.

Pom.xml을 이용한 정형화된 빌드 시스템으로 다양한 라이브러리를 관리하며 네트워크를 통해 자동으로 다운을 받는다.

기존에 사용하던 Apache Ant는 비교적 자유도가 높은 편이고, Maven은 정해진 라이프사이클에 의하여 작업을 수행하며, 전반적인 프로젝트 관리 기능까지 포함하는 차이점이 있다.




🐘 Gradle

Ant와 Maven의 장점들을 모아 개발해 출시한 Groovy를 이용한 빌드 자동화 시스템이다.

Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴로서, Ant Builder와 Groovy script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립의 기능을 모두 사용 가능하다.

Android 빌드 도구로 채택되었으며, Java, C/C++, Python 등 여러가지 언어를 지원한다.

별도의 빌드 스크립트를 통해 사용할 애플리케이션 버전, 라이브러리 등의 항목을 설정할 수 있다.

스크립트 언어로 작성되기 때문에 변수 선언, if, for 등의 로직 구현이 가능해 간결하게 구성이 가능하다.

⭐ Groovy

Groovy는 JVM에서 실행되는 스크립트 언어이다. JVM에서 동작하지만 소스코드를 컴파일할 필요 없다. Java와 호환되며, Java class file들을 Groovy class로 사용 가능하다. Java 문법과 유사하여 빌드 처리를 관리할 수 있다.




💥 Maven vs Gradle

결과적으로 봤을 때, Gradle이 Ant와 Maven의 장점들만 모아 만들어진 것이기 때문에 훨씬 좋다.

또한, 늦게 나온 만큼 상용성이나 성능 등 뛰어난 스펙을 지지고 있다.

  • Build라는 동적인 요소를 Xml로 정의하기 어려운 부분이 많다.
    • 설정 내용이 길어지며 가독성이 떨어지고, 의존관계가 복잡한 프로젝트에는 맞지 않다.
  • Groovy를 사용하기 때문에 동적인 Build는 Groovy 스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
    • Configuration Injection 방식을 통해 공통 모듈을 상속해서 사용하는 단점이 커버된다.
    • 설정 주입 시 프로젝트의 조건을 체크할 수 있어서 프로젝트 별 주입되는 설정을 다르게 할 수 있다.

0개의 댓글