티스토리 뷰
퍼옴: https://slipp.net/wiki/pages/viewpage.action?pageId=12189700
Gradle 빌드 라이프사이클
Gradle 빌드 툴은 기본적인 라이프사이클을 제공하지 않는다. 이 점이 메이븐 빌드 툴과의 가장 큰 차이점이다. 메이븐 빌드 툴은 빌드 설정 파일이 상속 개념이다. 따라서 부모(parent) 설정 파일에서 제공하는 기본 라이프사이클을 그대로 상속받는 구조이다. 객체 지향 프로그래밍에서의 상속과 똑같은 개념이다. 상속이 좋은 점도 많지만 부모의 속성과 행위를 규정함으로써 강제하는 부분이 많다. 따라서 객체 지향 프로그래밍에서도 상속보다는 구성(composition)을 사용하는 유연한 설계를 할 수 있다고 안내하고 있다.
Gradle 빌드 툴은 메이븐이 가지는 빌드 스크립트의 상속 문제를 해결하기 위해 구성을 통한 확장을 선택했다. 이 구성을 통한 확장의 핵심에 plugin이 있다. Gradle의 기본 설정에는 빌드 라이프사이클이 존재하지 않는다. 하지만 "apply plugin: 'java'" 와 같이 java plugin을 사용하도록 설정하는 순간 자바 프로젝트에 대한 빌드 라이프사이클 추가된다.
자바 프로젝트를 빌드하는 기본 과정을 유추해보면 다음과 같다.
- production java 코드(src/main/java 소스 코드)를 컴파일 한다.
- production resources(src/main/resources 자원)을 컴파일 output 디렉토리에 복사한다.
- test java 코드(src/test/java 소스 코드)를 컴파일 한다.
- test resources(src/test/resources 자원)을 test 코드 컴파일 output 디렉토리에 복사한다.
- test 소스 코드를 실행해 테스트를 진행한다.
앞에서 생성한 slipp 프로젝트에서 "gradle test"를 실행하면 다음과 같은 결과를 얻을 수 있다.
앞의 그림에서 의존관계를 맺고 있는 task가 먼저 실행되고 마지막에 test task가 실행되는 것을 확인할 수 있다. 이와 같이 Gradle은 plugin을 추가하면서 빌드에 필요한 task가 추가될 뿐만 아니라 task간의 의존관계까지 설정함으로써 빌드 작업을 수월하게할 수 있도록 지원한다.
'CI > Maven|Gradle' 카테고리의 다른 글
[퍼옴] Graddle Wrapper 기본 및 사용법 (0) | 2017.09.25 |
---|---|
[퍼옴] maven 빌드를 gradle 빌드로 변경하기 (0) | 2017.07.31 |
[퍼옴] Gradle 설정 파일 및 기본 개념 - 통합 개발 환경 - SLiPP (0) | 2017.07.31 |
Maven Scope (0) | 2017.04.05 |
- tensorflow
- 텐서플로우
- javascript
- AI
- executor
- spring
- ML
- memory
- 중앙정보처리학원
- Configuration
- BigData
- mybatis
- Gradle
- Docker
- python
- 머신러닝
- mysql
- API
- 모두의딥러닝
- serverless
- NIO
- AWS
- 점프투파이썬
- web
- 파이썬
- Error
- Java
- spark
- TDD
- Maven
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |