간단 정리 및 추가 정보
- 빌드 관리 도구를 사용하는 이유
빌드 관리 도구는 빌드, 테스트, 배포 과정의 자동화를 통해 개발 효율성을 높임. 의존성 관리, 빌드 스크립트 작성, 테스트 통합 등 다양한 기능을 제공하여 개발자의 반복 작업을 줄이고, 프로젝트의 일관성을 유지.- Maven과 Gradle의 주요 차이점
Maven: XML 기반의 pom.xml 파일을 사용하여 명시적이고 구조화된 설정을 제공하며, 정해진 빌드 라이프사이클을 가지고 있음
Gradle: Groovy 또는 Kotlin DSL을 사용하여 더 유연한 빌드 스크립트를 제공하고, 성능 향상을 위한 캐싱 및 병렬 처리 기능을 갖추고 있음- Maven의 라이프사이클
기본적으로 clean, bulid, site의 세 가지로 나뉘며, 각 라이프사이클은 여러 단계로 구성.
build 라이프사이클은 validate, compile, test, package, verify, install, deploy 단계로 이루어짐
각 단계는 특정 작업을 수행하며, 이를 통해 프로젝트의 빌드 및 배포가 이루어짐.- Maven의 pom.xml 파일의 주요 요소
pom.xml 파일에는 프로젝트의 의존성(dependencies), 플러그인(plugins), 빌드 프로파일(profiles), 그리고 프로젝트 메타데이터(groupId, artifactId, version) 등이 포함- Gradle의 build.gradle 파일에서 의존성을 어떻게 관리함?
build.gradle 파일의 dependencies 블록에서 의존성을 정의. ex) implementation 'com.example:library:1.0'과 같은 형식으로 외부 라이브러리를 추가. 또한, 의존성 버전 충돌 해결을 위해 resolutionStrategy를 사용할 수 있음
설정 파일: Maven은 XML 기반의 pom.xml 파일을 사용하여 프로젝트를 설정. 이 파일에는 프로젝트의 의존성, 빌드 플러그인, 빌드 프로파일 등이 정의.
라이프사이클: Maven은 validate, compile, test, package, verify, install, deploy와 같은 명확히 정의된 빌드 단계가 있음. 각 단계는 특정 작업을 수행합니다.
의존성 관리: Maven은 중앙 저장소(Maven Central)에서 라이브러리 의존성을 관리하고, dependency 태그를 통해 외부 라이브러리를 쉽게 추가할 수 있음.
플러그인: Maven은 다양한 플러그인을 통해 기능을 확장할 수 있음. 플러그인은 빌드 프로세스의 특정 작업을 수행하는 데 사용.
설정 파일: Gradle은 Groovy 또는 Kotlin DSL을 사용하여 빌드 스크립트를 작성. build.gradle (Groovy) 또는 build.gradle.kts (Kotlin) 파일을 사용.
성능: Gradle은 캐시와 병렬 처리 기능을 통해 빠른 빌드 속도를 가짐. Gradle Daemon은 빌드 성능을 높이는 데 도움.
의존성 관리: Gradle은 Maven 저장소를 사용할 수 있음, dependencies 블록을 통해 의존성을 정의하고 관리할 수 있음.
확장성: Gradle은 사용자 정의 플러그인 및 태스크를 지원, 복잡한 빌드 로직을 코드처럼 작성할 수 있음.
Ant: 초기 Java 빌드 도구로, XML 기반의 build.xml 파일을 사용. Ant는 빌드 과정을 세밀하게 제어할 수 있지만, 빌드 스크립트가 복잡해질 수 있음.
Buck: Facebook에서 개발한 빌드 시스템으로, 빠른 증분 빌드를 지원. 특히 큰 프로젝트에 유용.
SBT: Scala 빌드 도구로, Scala 및 Java 프로젝트에 적합하며, 유연한 빌드 설정과 빠른 빌드를 지원.