Kim Jinung

Build automation tools - Maven, Gradle 본문

Language/Java

Build automation tools - Maven, Gradle

Kim Jinung 2023. 2. 21. 18:57

1. Software build 

소스 코드를 PC에서 실행할 수 있는 독립된 형태로 가공하는 과정을 의미한다. 이 과정에는 소스 코드를 머신 코드로 변환하는 컴파일, 패키징, 의존성 라이브러리 관리, 테스트가 포함된다.

 

예를 들어서 자바 애플리케이션이라면 빌드를 통해 하나의 jar 파일이 생성 된다. iOS 앱이라면 빌드를 거쳐서 소스 코드가 하나의 실행 가능한 앱이 된다. 이것이 빌드다.


2. Build automation

소프트웨어 개발 과정에서 수없이 많은 build를 거치게 된다. Build automation의 목적은 이 반복 과정을 자동화 하여 생산성을 높이는 것이 목적이다. (빌드 자동화 도구들은 빌드 순서 커스터마이징을 제공하기도 한다.)


3. Build automation tools

Build automation을 기능을 제공하는 소프트웨어다. 오늘날 크게 2가지 관점의 build automation이 존재한다. 첫 번째로 build automation utility이며 두 번째가 build automation server다. 첫 번째에 해당하는 것이  Maven과 Gradle처럼 주로 로컬 환경에서 빌드 자동화에 사용하는 툴이고, 두 번째는 젠킨스와 같이 CI(Continuos Intergration)에 해당한다. 


4. Build automation utility

(1) Maven

자바 프로젝트를 위한 build automation tool이다. dependency를 pom.xml 파일 형태로 관리한다. 

(Maven과 Gradle 모두 지정한 리포지토리에서 의존성 라이브러리에 대한 업데이트를 자동으로 체크해준다.)

(2) Gradle

Groovy로 개발한 build automation tool이다. Android에서는 기본 build tool로 채택하고 있다. Maven과 달리 .gradle 파일을 사용한다. 최근 자바 진영에서 Maven -> Gradle로 많이 이동한 듯 보인다. 하지만 레거시 프로젝트는 아직 Maven을 많이 사용하고 있다고 한다.

 

Gradle의 속도가 더 빠르고 파일 가독성이 좋다는 글이 꽤 보인다.


우선은 이정도만 알아두고 차후 CD 공부할 때 build automation tool에 관한 자료를 더 읽어보면 좋을 듯 하다.

'Language > Java' 카테고리의 다른 글

Exception Handling in Java  (0) 2023.05.17
Java Collection framework  (0) 2023.05.16
Java String  (0) 2023.05.16
Wrapper class, Primitive type  (0) 2023.05.15
JVM  (0) 2023.05.12