Gradle에 대하여

Y39·2023년 3월 17일
0

toBeProgrammer

목록 보기
59/88

movie

Gradle이란?

  • Groovy를 기반으로 한 오픈소스 빌드 도구
  • 거의 모든 타입의 소프트웨어의 빌드 가능

빌드?

  • 소스 코드를 컴파일, 테스트, 정적분석을 실행하여 애플리케이션으로 만드는 과정
  • 문제점: 라이브러리가 많이 생겨 버전관리 등에 큰 어려움이 생김
    -이 문제점에서 빌드도구가 탄생

Groovy

  • JVM에서 실행되는 스크립트 언어, Java를 기반으로 해서 매우 유사한 문법구조를 갖고 호환성이 좋다

장점

  • 프로젝트 설정 주입 방식
    • 미리 라이브러리를 준비하는 것이 아니라 프로젝트에 필요한 것을 찾아서 주입
    • xml보다 가독성이 좋다.
  • 멀티 프로젝트 빌드
    • 하나의 repository 내에 다양한 하위 프로젝트를 구성가능
    • 이때 똑같은 라이브러리를 중복처리 할 필요 없이 공통으로 설정
    • 각 프로젝트에 필요한 라이브러리만 따로 설정해두면 됨
  • gradle의 속도가 빠른 이유
    • 점진적 빌드: 마지막에 빌드 이후 변경된 점이 없으면 빌드를 하지 않음
    • 빌드 캐시: 빌드가 반복되면 캐시를 보내서 반복 빌드를 줄임
    • 데몬 프로세스: 서비스 요청에 응답하기 위해서 빌드를 계속 유지
  • maven보다 최소 2배 이상 빠름

의존성

: A객체는 B객체를 사용한다 : A는 B에게 의존

  • 내부 의존성

    • C->B->A
    • C는 B가 A에게 의존하고 있음을 알고 있는가?
  • api: 내부 의존성을 컴파일, 런타임 모두 보임

    • 컴파일 할 때도 참조하고, 런타임 할 때도 참조해서 rebuild가 두번 발생
  • implementation: 내부 의존성을 런타임에만 보임

    • 런타임에 한 번 참조해서 한번만 rebuild
  • api => public
    : api 의존성은 라이브러리 외부 프로젝트에 전이됨.

    • 멀티 프로젝트인 경우, api로 선언하면 공통 라이브러리로 사용 가능
  • implement => private
    : api 의존성은 라이브러리 내부 프로젝트에서만 사용. 외부 프로젝트에는 전이 되지 않음.

profile
System.out.print("Bold")

0개의 댓글