ebson

[JAVA STUDY] JAVA 프로그램의 빌드 도구 Ant, Maven, Gradle 의 비교와 이해 본문

DEV-STUDY, ETC.

[JAVA STUDY] JAVA 프로그램의 빌드 도구 Ant, Maven, Gradle 의 비교와 이해

ebson 2022. 8. 15. 16:18

Ant, Maven, Gradle

 

1. 빌드와 실행

  • 빌드란 소스코드 파일을 여러 과정을 거쳐 컴퓨터에서 실행할 수 있는 독립 sw 가공물로 변환시키는 과정임
  • 독립 sw 가공물이란 Artifact 임
  • 빌드를 세분화하면
  • 1) 소스 코드를 컴파일함
  • 2) 테스트 코드를 컴파일함
  • 3) 테스트 코드를 실행함
  • 4) 테스트 코드 리포트를 작성함
  • 5) 기타 추가 설정한 작업들을 진행함
  • 6) 패키징을 수행함
  • 7) 최종 sw 결과물(Artifact)를 만들어 냄
  • 테스트 코드란 내가 작성한 코드를 자동 테스트해주는 코드를 추가 작성한 것임
  • 실행이란 내가 작성한 코드 혹은 테스트 코드를 컴파일을 거쳐 작동시켜 보는 것임
  • 독립 sw 가공물이 나올 수도 있고 나오지 않을 수도 있음
  • 자바스크립트나 파이썬 등 인터프리터 언어는 컴파일이 필요 없음

 

2. Java 의 빌드 툴

  • 빌드 과정은 복잡하므로 수동 작업은 실수를 유발함
  • 빌드 툴은 소스코드의 빌드 과정을 자동으로 처리하는 프로그램임
  • 빌드 툴은 외부 라이브러리를 자동 추가하고 관리하는 프로그램임
  • Java 프로그램의 빌드 툴에는 Ant, Maven, Gradle 등이 있음

 

2.1. Ant

  • Ant는 설정을 위해 xml을 사용함
  • Ant는 간단하고 사용하기 쉬움
  • Ant는 복잡한 처리를 하려면 빌드 스크립트가 장황해져 관리가 어려움
  • Ant는 외부 라이브러리를 관리하는 구조가 없음
  • Ant는 2000년 초중반에 사용된 빌드 툴임

2.2. Maven

  • Maven은 설정을 위해 xml을 사용함
  • Maven은 외부 라이브러리를 관리할 수 있음
  • Maven은 장황한 빌드 스크립트 문제를 해결함
  • Maven은 특정 경우에만 xml이 복잡해짐
  • Maven은 xml자체의 한계가 있음
  • Maven은 Ant가 가진 단점들을 대부분을 극복했음 2020 기준 레거시 코드로 많이 있으나 신규 프로젝트에서는 사용을 지양함

2.3. Gradle

  • Gradle은 설정을 위해 groovy 언어를 사용함
  • Gradle은 외부 라이브러리를 관리할 수 있음
  • Gradle은 유연하게 빌드 스크립트를 작성할 수 있음
  • Gradle은 성능이 뛰어남
  • Gradle은 2020 기준 최신 Java 프로그램 빌드 툴이고 신규 프로젝트에 많이 사용됨
  • Gradle은 구글 안드로이드 앱의 정식 빌드 툴임

 

[ 그림 1 ] Java 프로그램의 빌드 툴 변화 Ant -> Maven -> Gradle

 

3. 총정리

  • 빌드란 단순히 실행하는 것과 다름
  • 빌드 툴은 빌드 과정 자동화와 외부 라이브러리 관리를 위해 사용됨
  • 널리 쓰였던(쓰이는) Java 빌드 툴에는 Ant, Mave, Gradle이 있음
  • 2020년 기준으로 Maven과 Gradle이 많이 사용됨

 

 

참고 출처

 

'DEV-STUDY, ETC.' 카테고리의 다른 글

LG CNS DEVON FRAMEWORK  (0) 2022.08.28
데이터독(Datadog)  (1) 2022.08.28
젠킨스(JENKINS)  (0) 2022.08.28
지라(JIRA)  (0) 2022.08.28
[JAVA STUDY] JDK, JRE, JVM 각각의 개요와 역할의 이해  (0) 2022.08.15
Comments