-
[CS] GradleComputer Science/CS 2023. 3. 3. 14:15728x90
Gradle
Groovy를 이용한 빌드 자동화 시스템입니다. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 스튜디오의 공식 빌드 시스템입니다. Java, C/C++, Python 등 다양한 언어를 지원합니다.
Ant 와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 빌드 도구입니다.
(빌드 도구 : 소스코드를 실행가능한 애플리케이션 생성물을 자동으로 만드는 프로그램. 빌드 과정은 소스코드를 컴파일하고 연결하고 패키징하여 실행가능한 형태로 가공)
빌드 :
우리가 작성한 자바 코드를 비롯해 프로젝트에 쓰인 각각의 파일 및 자원(.xml, jpa, jpg, properties)등을 JVM이나 톰캣과 같은 WAS가 인식할 수 있도록 패키징하는 과정
빌드 관리 도구 :
개발자가 소스코드 작성해 어플리케이션 생성할 때는 여러가지 외부 라이브러리를 가져다 사용합니다. 이때 사용자가 직접 외부 라이브러리를 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리해주는 도구입니다.
빌드 자동화(Build Automation)
- 의존성 라이브러리 다운로드
- 컴파일 : 소스코드 → 바이너리 코드
- 테스트 실행
- 바이너리코드 패키징
- 운영시스템 배포
Java 에서 많이 사용되고 있는 빌드 도구로 Ant, Maven, Gradle이 있습니다.
Maven 특징
- XML기반으로 작성 - LifeCycle과 프로젝트 객체 모델(POM, Project Object Model) 이란 개념이 도입 - Ant의 장황한 빌드 스크립트를 개선 - pom.xml에 필요한 라이브러리를 선언하면 자동으로 해당 프로젝트를 불러와 편리 - 상대적으로 학습 장벽이 높음 - 라이브러리가 서로 의존하는 경우 복잡해짐
Gradle의 특징
1. 의존성 관리를 위한 다양한 방법을 제공하고 빌드 스크립트를 XML언어가 아닌 JVM에서 동작하는 스크립트 언어 "Groovy" 기반의 DSL(Domain Specific Language) 를 사용합니다. 2. Groovy는 자바 문법과 유사하여 자바 개발자가 쉽게 익힐 수 있는 장점이 있으며 Gradle Wrapper를 이용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 빌드 할 수 있습니다. 3.Maven의 pom.xml을 Gradle 파일로 변환할 수도 있으며 Maven의 중앙 저장소도 지원하기 때문에 라이브러리를 모두 그대로 가져다 사용할 수 있습니다. 4. 필요한 라이브러리를 Maven의 pom.xml보다 훨씬 적은 코드 수로 간결하게 정의합니다. 5. 필요한 라이브러리를 프로젝트 설정 주입 방식(Configuration Injection)으로 정의해 Maven의 상속 구조보다 재사용에 용이합니다.
이처럼 Gradle은 유연함과 성능에 초점을 둔 오픈소스 빌드도구 입니다.
또한 Gradle에는 multi project builds, Wrapper 기능이 있습니다.
Project root directory
├── .gradle │ ├── 4.8 │ ├── 4.9 │ └── ⋮ ├── build ├── gradle │ └── wrapper ├── gradle.properties ├── gradlew ├── gradlew.bat ├── settings.gradle or settings.gradle.kts ├── subproject-one | └── build.gradle or build.gradle.kts ├── subproject-two | └── build.gradle or build.gradle.kts └── ⋮
.gradle Gradle에서 생성한 프로젝트별 캐시 디렉토리 Build Gradle이 모든 Build Artifact를 생성하는 이 프로젝트의 빌드 디렉토리 wrapper Jar 파일 및 Gradle Wrapper구성 gradle.properties 프로젝트별 Gradle 구성 속성 Gradlew.bat Gradle Wrapper를 사용하여 빌드를 실행하기 위한 스크립트 settings.gradle 하위 프로젝트 목록이 정의된 프로젝트의 설정 파일 참고 URL: https://techblog.woowahan.com/2625/
https://docs.gradle.org/current/userguide/directory_layout.html#dir:project_root
728x90'Computer Science > CS' 카테고리의 다른 글
[CS] 쿠키와 세션 (0) 2023.09.08 [Network] TCP/IP, OSI 7 Layer, UDP (0) 2023.05.15 [CS] 정규 표현식 Regular Expression, Regex (0) 2023.01.19 [CS] Graph, Tree (0) 2022.11.28 [CS] 동기 비동기 프로그래밍 (0) 2022.09.07