<일기>
오늘부터 스프링 강의가 시작됐다.
그리고 그에 맞춰 새로 팀편성이 됐는데 모두다 극 I다 ㅋㅋ,,, 어느 정도냐면,, 아침에 팀바뀌어서 모일 때 인사만 나눈 이후로 밤에 수업 끝나기 15분 전에 내가 용기내서 말 걸기 전까지 한 마디도 안 했다 하핫,, 그래도 간단히 자기소개 하고 조금은 아이스 브레이킹 한 것 같다.
</일기>
스프링 강의 듣다가 8분 남짓한 그레이들 강의를 정리해두면 좋겠다 싶어서 적어보았다. 10분 테코톡을 참고했다.
Gradle
2012년에 출시된 Groovy를 기반으로 한 오픈소스 빌드 도구로,
거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템
빌드
소스 코드를 컴파일, 테스트, 정적분석 등을 실행하여 실행 가능한 어플리케이션으로 만들어주는 과정
빌드 도구 등장 배경
다양한 라이브러리의 등장 (ex, 스프링 부트, 테스트 등) 으로 다음과 같은 문제점 생겼다.
- 라이브러리를 다운로드 및 추가하는 번거로움
- 개발자들 간의 버전 관리 어려움
- 다운받은 jar 파일의 보안 위험
이런 문제를 한번에 해결할 수 있는 도구의 필요성이 생겨났고, 빌드 도구가 등장했다.
빌드 도구 특징
- 계속해서 늘어나는 라이브러리를 자동 추가 및 관리
- 프로젝트를 진행하며 라이브러리의 버전을 쉽게 동기화
Gradle은 이러한 빌드 도구 중 하나.
Gradle은 Groovy 기반이다.
Groovy
JVM 상에서 실행되는 스크립트 언어 Java와 유사한 문법 구조를 가지며 호환성이 좋다.
Gradle 장점
- 프로젝트를 설정 주입(Configuration Injection) 방식으로 정의
- 필요한 정보가 있으면 그것을 프로젝트에 주입한다.
- Maven의 상속 구조보다 재사용에 용이
- 프로젝트의 조건을 체크할 수 있어서 프로젝트별로 주입되는 설정을 다르게 할 수 있다.
- 멀티 프로젝트 빌드 가능
- 하나의 레포지토리 내에 여러 개의 하위 프로젝트를 구성할 수 있다.
- 빌드 속도 빠름
- 점진적 빌드 (Incremental Builds)
- 그레이들은 빌드 실행 중 마지막 빌드 호출 이후에 task의 입력, 출력, 혹은 구현이 변경됐는지 확인한다.
- 최신 상태가 아니라면 빌드는 실행되지 않는다.
- 빌드 캐시 (Build Cache)
- 두 개 이상의 빌드가 돌아가고, 하나의 빌드에서 사용되는 파일들이 다른 빌드에 사용된다면 그레이들은 빌드 캐시를 이용해 이전 빌드의 결과물을 다른 빌드에서 사용할 수 있다.
- 다시 빌드하지 않아도 되므로 빌드 시간이 줄어들게 된다.
- 데몬 프로세스
- 의미 : 서비스의 요청에 응답하기 위해 오랫동안 살아있는 프로세스
- 그레이들의 데몬 프로세스는 메모리 상에 빌드 결과물을 보관
- 이로인해 한 번 빌드된 프로젝트는 다음 빌드에서 매우 적은 시간만 소요
- 점진적 빌드와 초점이 다름. 빌드 사이에 다음 빌드를 유지하고 있다.
- 점진적 빌드 (Incremental Builds)
위 3개 말고도 여러 다른 이유들로 Maven 보다 2배 이상, 최대 100배 빠르다.
그레이들의 장점 요약
프로젝트를 설정 주입 방식으로 사용해서 재사용에 유리하고,
멀티 프로젝트를 통해 여러 프로젝트를 사용할 수 있고,
빌드 속도도 여러 방면에서 최적화를 해서 빠르다.
의존성
- api - 내부 의존성을 컴파일과 런타임 모두에 보이는 API 의존성
- implementation - 내부 의존성을 런타임에서만 보이는 구현 의존성
- compileOnly - 컴파일에만 사용되는 의존성 정의
- runtimeOnly - 런타임에만 사용되는 의존성 정의
- test + Implementation, CompileOnly, RuntimeOnly - 해당 의존성을 테스트 시에만 사용하도록 정의
'TIL ✍️' 카테고리의 다른 글
23년 11월 2일(목요일) - 24번째 TIL (0) | 2023.11.02 |
---|---|
23년 11월 1일(수요일) - 23번째 TIL : String.repeat vs StringBuilder.append 속도 차이 (2) | 2023.11.01 |
23년 10월 30일(월요일) - 21번째 TIL (0) | 2023.10.30 |
23년 10월 28일(토요일) - 20번째 TIL (0) | 2023.10.28 |
23년 10월 27일(금요일) - 19번째 TIL (0) | 2023.10.27 |