Java Build Tool
: 소프트웨어 개발에서 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구
- 소스 코드의 빌드 과정을 자동으로 처리해주는 도구
- 외부 소스 코드(외부 라이브러리) 자동 추가, 관리
- EX) APACHE ANT, Maven, Gradle
1. ANT(앤트)
- 설정을 위해 XML 스크립트를 사용
- 이클립스 IDE에 기본 탑재되어 있고, 간단하고 사용하기 쉬움
- 복잡한 처리를 하려 하면 빌드 스크립트가 장황햇져 관리가 어려움
- 외부 라이브러리를 관리하는 구조가 없음
- 2000년대 초반에 사용했지만, 최근엔 주로 레거시 시스템에서만 사용
2. Maven(메이븐)
- 설정을 위해 XML 스크립트를 기반으로 하며, pom.xml 파일로 의존성을 관리
- 외부 라이브러리를 관리할 수 있음
- 장황한 빌드 스크립트 문제를 해결함
- Life Cycle 개념이 도입되어 빌드 순서를 정의할 수 있음
- XML 자체의 한계가 있음
3. Gradle(그래들)
- 설정을 위해 Groovy(그루비) 문법을 사용
- 외부 라이브러리를 관리할 수 있음
- 유연하게 빌드 스크립트를 작성할 수 있음
- 성능이 뛰어남 -> 캐싱이 잘됨
- 가장 최근에 나온 빌드 도구
- 기존 XML 기반 스크립트 작성에 비해 관리가 편해짐
- Build.gradle에 스크립트를 작성하여 사용
Gradle을 사용하는 이유
1. 간결한 스크립트 작성
- 기존 pom.xml
<project ... 생략 ...>
<modelVersion>4.0.0</modelVersion>
<groupId>그룹 ID</groupId>
<artifactId>아티팩트 ID</artifactId>
<version>버전</version>
<packaging>jar</packaging>
<name>이름</name>
<properties> ... 속성 정보 ... </properties>
<dependencies> ... 의존 라이브러리 정보 ... </dependencies>
</project>
- Build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.11'
id 'io.spring.dependency-management' version '1.0.15.RELEASE' }
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations { compileOnly { extendsFrom annotationProcessor } }
repositories { mavenCentral() }
dependencies { ... }
tasks.named('test') { useJUnitPlatform() }
2. 빠른 빌드 속도
1) 점진적 빌드
- 작업의 입출력을 추적하고, 변경된 파일만 처리하여 작업
- 즉, 이미 빌드된 파일을 모두 빌드하는 것이 아니라 변경된 내용만 빌드함
2) 캐싱
- Gradle은 캐싱을 하기 때문에 다른 빌드 도구보다 속도가 빠름
- 거의 모든 시나리오에서 최소 2배 더 빠른 성능을 제공하고, 빌드 캐시를 사용하는 대규모 빌드의 경우 100배 더 빠름
3) 데몬 프로세스
- 서비스 요청에 응답하기 위해서 메모리 상에 빌드 결과물을 보관하는 오래 지속되는 프로세스
- 한 번 빌드된 프로젝트는 다음 빌드 시 시간이 단축됨
3. 멀티 프로젝트 빌드
- 대규모 프로젝트에서는 멀티 모듈 프로젝트로 구성하게 됨
cf) 모듈
: 패키지의 한 단계 위의 집합체이며, 관련된 패키지와 리소스들을 재사용할 수 있는 그룹
- 각 모듈은 독립적으로 개발, 빌드, 테스트, 배포가 가능함
cf) 멀티 모듈
: 상호 연결된 여러 개의 모듈로 구성된 프로젝트를 의미
Gradle 사용
- 기본적으로 생성했을 때 Gradle 프로젝트 구조
├── build.gradle
├── .gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
1) .gradle
: Gradle이 사용하는 폴더로 작업(task)으로 생성된 파일이 저장됨
2) gradle
: gradle-wrapper와 관련된 폴더
- gradle-wrapper 실행 명령으로도 task 실행이 가능
- 이걸 사용하면 새로운 환경에서도 gradle을 설치하지 않고 빌드가 가능 -> 각 개발자의 로컬 환경에 영향을 받지 않고 사용할 수 있음
- java나 gradle을 설치할 필요 없이 바로 프로젝트를 실핼할 수 있음
3) gradlew, gradlew.bat
: gradle-wrapper 실행 명령
- gradlew는 macOS, Linux용이고 gradle.bat은 윈도우 실행 명령
- gradle을 설치하지 않아도 빌드할 수 있음 -> 환경에 종속되지 않음
4) settings.gradle
: 프로젝트에 대한 설정 정보를 작성하는 파일
- 멀티 모듈 프로젝트에서 하위 모듈을 추가한느 경우에 이 파일에 명시해야 함
5) build.gradle
: 프로젝트에 필요한 의존성과 빌드 처리 내용을 작성하는 파일
6) plugin
- 프로젝트에서 사용하는 Gradle 플러그인을 추가
7) 저장소
: 각종 프로그램이 저장되는 위치
- build.gradle은 외부 라이브러리에 대한 기술이 있음
'JAVA' 카테고리의 다른 글
6. Xms & Xmx (0) | 2025.03.28 |
---|---|
5. JRE, JDK, JVM (0) | 2025.03.21 |
4. 다양한 GC (0) | 2025.03.21 |
3. JVM 메모리 구조 (0) | 2025.03.14 |
2. 객체지향 (0) | 2025.03.14 |