Ant, Maven, Gradle

yunuyununu·2024년 12월 2일

개발 상식

목록 보기
9/17
post-thumbnail

Build

  • 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물
  • 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라 할 수 있다.
  • 예를 들어 게임회사에서 게임을 개발하는 것은 '개발'이며, 게임 사용자가 자신의 노트북에 게임을 설치하고 실행하는 것을 '빌드'라고 한다.

빌드 도구 (Build tool)

  • 빌드 과정을 도와주는 도구.
  • 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램.
  • 빠른기간동안 계속해서 늘어나는 라이브러리 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장
  • 초기의 java 빌드도구로 Ant를 많이 사용했으나 최근 많은 빌드도구들이 생겨나 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.
    (Ant는 스크립트 작성도 많고ㅡ 라이브러리 의존관리가 되지 않아 불편함.)

Ant

  • 자바 빌드 도구로서 XML 기반의 스크립트를 사용한다.
  • CVS, SVN 체크아웃에서부터 컴파일, 테스트, 디플로이까지의 빌드 프로세스를 자동화할 수 있다.
  • JUnit과 완벽히 통합되어 있다.
  • project, target으로 구성되며 target 안에 task를 구현한다.
  • Ant를 사용하려면 build.xml 파일을 작성하고 실행해야 한다.

Maven

  • Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.
  • Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며, 많은 편리함과 이점이 있어 널리 사용되고 있다.
  • XML 스트립트를 기반으로 하며, 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.
  • Maven은 중앙 저장소를 통한 자동 의존성 관리를, 중앙 저장소(아파치재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, Maven은 자기 회사만의 중앙 저장소를 구축할 수 있다.
  • 간단한 설정을 통한 배포 관리가 가능하다.

Gradle

  • 최신 자바 빌드 도구로 그루비(Grrovy) 문법을 사용한다.
  • Ant와 Maven의 장점을 결합하고 단점을 보완한 도구이다.
  • Gradle은 Buile.gradle 파일에 스크립트를 작성하며, XML 기반 스크립트보다 관리가 편리하다.

간단 비교

ㅤㅤAntㅤㅤ 1. xml로 관리. 빌드 스크립트가 복잡함. 스크립트가 정형화 되어있지 않아 유지보수 어려움.
2. 외부 라이브러리 관리 불가.(관리하기 위해서는 ivy 필요)
ㅤㅤMavenㅤㅤ 1. xml로 관리. 빌드 스크립트가 정형화 되어있음. 복잡한 빌드 스크립트 커스텀 어려움.
2. 외부 라이브러리 관리 가능.
3. 멀티 프로젝트는 상속 방식으로 지원
ㅤㅤGradleㅤㅤ 1. Groovy 언어 사용
2. 빌드 속도 빠름.
3. 멀티 프로젝트 빌드 지원

출처: https://blog.naver.com/rorean/222236619759
https://velog.io/@willie/Ant-Maven-Gradle%EC%9D%98-%EC%B0%A8%EC%9D%B4

profile
코딩이의 끄적끄적

0개의 댓글