일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- G1GC
- 자식객체
- Spring/JAVA 서적
- Runtime Area
- Self Descript Message
- hateoas
- 마이크로서비스디자인패턴
- java
- M:N
- docker
- Solid
- DB
- GC
- 미니미프로젝트
- TDD
- ComponentScan
- Execution Engine
- Java 22
- 도커
- 클린코드
- 부모객체
- RESAPI
- pair programming
- KPT
- 완벽이해
- 스프링으로하는마이크로서비스구축
- testdrivendevelopment
- Be
- ATDD
- 트랜잭션 격리 수준
- Today
- Total
Programming Summary
Build) build.gradle이란? 본문
build.gradle이란?
build.gradle은 공식 문서에 다음과 같이 써져있다.
Gradle Build Tool is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language.
Gradle 빌드 도구는 우아하고 확장 가능한 선언적 빌드 언어를 갖춘 빠르고 신뢰할 수 있으며 적응력 있는 오픈 소스 빌드 자동화 도구입니다.
..라고 한다. 요점은 빌드 자동화 도구라는 것이다.
Gradle 핵심 개념
다음은 Gradle Core 구조도이다.
프로젝트(Project)
Gradle의 프로젝트는 애플리케이션이나 라이브러리와 같이 빌드할 수 있는 소프트웨어의 일부분이다.
단일 프로젝트 빌드 시, 루트 프로젝트라고 불리는 단일 프로젝트를 포함하며, 멀티 프로젝트 빌드 시 하나의 루트 프로젝트와 여러 서브 프로젝트를 포함한다.
빌드 스크립트(Build Scripts)
빌드 스크립트는 Gradle에게 프로젝트를 빌드하는 데 필요한 내용이 명세되어있다. 또한 각 프로젝트는 하나 이상의 빌드 스크립트를 포함할 수 있다.
의존성 관리(Dependency Management)
의존성 관리는 프로젝트에 필요한 외부 리소스들을 정의하고 내 프로젝트로 가져오는 자동화 기술이다. 빌드 중, 어떤 시점까지 외부 의존성을 포함할 지를 결정하는 명령어들(implementation)들을 활용하여 외부 의존성을 관리한다.
태스크(Tasks)
태스크는 코드 컴파일 또는 테스트 실행과 같은 기본 작업 단위이다.
각 프로젝트는 빌드 스크립트나 플러그인 내에서 하나 이상의 태스크를 정의한다.
플러그인(Plugins)
플러그인은 새로운 작업(예: JavaCompile), 도메인 객체(예: SourceSet), 규칙(예: src/main/java)을 도입하고, 핵심 또는 다른 플러그인 객체를 확장한다. Gradle의 플러그인은 일반적인 빌드 작업을 자동화하고, 외부 도구나 서비스와 통합하고, 특정 프로젝트 요구 사항을 충족하도록 빌드 프로세스를 조정하는 데 필수적이다. 또한 빌드 로직을 구성하는 기본 메커니즘 역할도 한다.
즉, 여러 구성들을 모듈화하여 재사용성을 높인 것이 플러그인이 되겠다.
이에 대한 예시로 스프링의 코드에는 다음과 같이 되어 있다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.7'
id 'io.spring.dependency-management' version '1.1.5'
}
위 내용은 java, springboot, spring.dependency-management에 관한 설정들을 내 프로젝트로 가져오겠다는 것이다.
build Script는 어떻게 쓸까?
Build Script는 다음과 같은 과정으로 나뉘어 있다.
이에 관한 설명은 추후 추가할 예정이다.
자바 플러그인의 Dependency Declaration Configurations 종류
다음 명령어들을 통해 자바 프로젝트 내에서 외부 리소스들을 주입 받고 사용할 수 있다.
implementation
- 구현 의존성
- 설명: 프로젝트의 메인 소스 세트에서 컴파일 타임과 런타임 모두에 필요한 의존성을 나타냅니다(즉, 구현 전용 의존성).
compileOnly
- 컴파일 전용 의존성
- 설명: 컴파일 타임에만 필요하고 런타임 클래스패스에는 포함되지 않는 의존성을 나타냅니다(즉, 컴파일 타임에만 필요한 의존성, 런타임에는 사용되지 않음).
runtimeOnly
- 런타임 전용 의존성
- 설명: 런타임에만 필요하고 컴파일 클래스패스에는 포함되지 않는 의존성을 나타냅니다(즉, 런타임에만 필요한 의존성).
testImplementation (extends implementation)
- 테스트 구현 의존성
- 설명: 프로젝트의 테스트 소스 세트에서 컴파일 타임과 런타임 모두에 필요한 의존성을 나타냅니다(즉, 테스트를 위한 구현 전용 의존성).
testCompileOnly
- 테스트 컴파일 전용 의존성
- 설명: 프로젝트의 테스트 소스 세트에서 컴파일 타임에만 필요하고 런타임 클래스패스에는 포함되지 않는 의존성을 나타냅니다(즉, 테스트 컴파일을 위한 추가 의존성, 런타임에는 사용되지 않음).
testRuntimeOnly (extends runtimeOnly)
- 테스트 런타임 전용 의존성
- 설명: 프로젝트의 테스트 소스 세트에서 런타임에만 필요한 의존성을 나타냅니다(즉, 테스트 실행을 위한 런타임 전용 의존성).
annotationProcessor
- 애노테이션 프로세서
- 설명: 프로젝트 소스 코드를 컴파일하는 동안 사용되는 애노테이션 프로세서를 나타냅니다(즉, 컴파일 시 사용되는 애노테이션 프로세서).
참고
'CS 공부' 카테고리의 다른 글
Spring) 스프링은 프레임워크가 맞을까? (0) | 2024.07.18 |
---|---|
협업) 클린 코드를 꼭 해야 할까? (0) | 2024.07.09 |
Network) Rest API란? (0) | 2024.07.05 |
디자인 패턴) MVC는 왜 사용할까? (1) | 2024.07.02 |
Java) G1 GC를 어떻게 뜯어볼까? (6) | 2024.04.16 |