목차
- Gradle이란?
- 빌드도구의 역사
- Gradle 특징 및 장점
- Gradle 빌드 스크립트
- Gradle 정리
1. Gradle 이란?
그래들의 정의는 다음과 같다.
2012년에 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로, 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템
Groovy
- Groovy는 Apache 재단에서 개발된 동적 객체 지향 프로그래밍 언어이다.
- JVM 위에서 작동하며 JAVA의 강점 위에 Python 등의 언어의 영향을 받았다.
- Groovy Shell도 지원하여 간단한 코드를 테스트할 수 있는 환경도 제공한다.
- Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있다.
빌드
빌드는 우리가 작성한 소스코드를 실행 가능한 파일로 변환해 주는 것을 말한다.
빌드도구
- 빌드 도구는 빌드 및 라이브러리 관리, 테스팅 등을 자동화 하여 수행한다.
- 소규모의 프로젝트에서는 의존성이 있는 라이브러리나 API를 직접 설치하고, 소스코드를 빌드하고 실행하는 것이 큰 문제가 되지 않는다. 하지만 프로젝트의 규모가 커지고, 소스코드가 방대해질 경우에 각각의 라이브러리들을 일일히 설치하고 사용하는 것은 프로젝트를 수행함에 있어 불필요한 업무의 비중이 높은 것으로 생각될 수 있다.
- 개발자는 이러한 불필요한 업무를 하지 않기 위해, 자동으로 의존성을 관리하고 소스코드를 빌드할 수 있는 도구를 사용하는 것이다.
2. 빌드도구의 역사
Gradle 등장 전 빌드도구
Ant(2000년 7월 19일 발표) | Maven(2004년 7월 13일 발표) | |
장점 | 기본적인 컴파일, 패키징, 배포 작업 수행 가능 XML 기반의 스크립트 사용 작성에 정해진 규칙이 없어 유연성을 가짐 |
정해진 라이프 사이클에 따라 빌드 진행 pom.xml 파일 사용 라이브러리 의존성 자동 관리 기능 추가 |
단점 | 라이브러리 의존관계를 정의하는 구조의 부재 정해진 규칙이 없어 유지보수가 어려움 |
xml파일 기반으로 가독성이 좋지 않음 의존관계가 복잡한 프로젝트에는 부적절 |
Gradle(2007년)
유연하고, 정해진 라이프사이클이 있고, 라이브러리 의존성 자동 관리 기능이 있다.
3. Gradle 특장점
1. 성능이 뛰어나다.
- 빌드 캐시
빌드 결과물을 캐싱하여 재사용
라이브러리 의존성을 캐시로 저장 후 이전에 다운로드 한 라이브러리 재사용
- 점진적 빌드
마지막 빌드 호출 이후 변경된 부분만 빌드
변경되지 않은 부분은 캐시결과를 검색해 재사용
테스크의 입력, 출력 혹은 변경되지 않은 부분은 빌드하지 않는다.
- 데몬 프로세스
다음 빌드 작업을 위해 백그라운드에서 대기하는 프로세스
초기 빌드 이후 빌드 실행시 초기화 작업을 거치지 않는다.
이로 인해 한번 빌드된 프로젝트는 당므 빌드에서 매우 적은 시간만 소요된다.
2. 멀티 프로젝트 빌드 지원
- 공통되는 도메인을 사용하는 프로젝트를 하나의 프로젝트로 묶어서 관리하는 것을 말한다.
- 두 독립적인 프로젝트가 같은 멤버클래스를 사용하면 멤버클래스의 변경이 있을 때 두 프로젝트 모두 다 변경을 해주어야 한다. 이때 그래들을 이용해서 유지보수를 쉽게할 수 있다.
3. 설정 주입 방식
- 필요한 정보를 직접 주입하는 방식
- 공통되는 정보는 묶어서 주입 가능
- 프로젝트별로 설정을 다르게 주입할 수 있다.
- Maven의 상속 구조와 비교했을 때 가독성이 우월하다.
Gradle 스크립트 | Maven 스크립트 |
Gradle 빌드스크립트
구성요소
1. plugins
특정작업을 위해 모아놓은 task들의 묶음
2. dependencies
프로젝트 별로 어떤 의존성을 갖는지 명시해 주어야 한다.
3. repositories
라이브러리가 저장된 위치를 정의
대표적으로 Maven Central(), Jcenter(), Google Android()가 있다.
라이브러리의 저장소를 명시해주면 Gradle이 해당 저장소에서 필요한 라이브러리를 가져온다.
5. Gradle 정리
gradle 이란
프로그래머가 작성한 코드를 실행 가능한 파일로 변환해주고, 라이브러리, 테스트, 배포 등을 자동화하여 관리해주는 빌드 자동화 도구이다.
gradle 은
groovy 기반의 스크립트 언어로서 유연성을 갖는다.
성능 측면에서 유리한 빌드 도구이다.
Configuration Injection 방식을 통해서 편리한 멀티프로젝트 빌드를 지원한다.
공부하고 정리해놓고 시간이 많이 지나니까 포스팅하기가 더 어려운 것 같다. 바로바로 포스팅해야겠다.
'개발지식' 카테고리의 다른 글
[개발지식] 스레드(Thread), 싱글 스레드(Single Thread), 멀티 스레드(Multi Thread) (0) | 2024.05.08 |
---|---|
[JSON] JSON은 도대체 뭐지? (0) | 2024.01.17 |
[통신] HTTP란? (0) | 2024.01.16 |
[API] REST, REST API, RESTful 정리 (1) | 2024.01.11 |
[API] API ( Application Programming Interface ) 란? (1) | 2024.01.10 |