티스토리 뷰

여러가지 공부

Gradle??

김쓰로그 2022. 10. 11. 17:37

안녕하세요 

 

약 3달간 웹 개발 관련해서 공부를 해왔습니다.

그런데 그간 빌드 툴로 사용했던 Gradle에 대해 제대로 알지도 못한채 사용하고 있는거 같아

공부를 하고 정리를 해보고자 합니다.


Gradle??

Groovy를 기반으로 한 오픈소스 빌드 도구로서 거의 모든 타입의 소프트웨어를 빌드할 수 있는 빌드 자동화 시스템입니다.

그리고 프로젝트 정보 관리, 테스트 빌드, 배포 등의 작업을 진행해줍니다. 또한 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트의 관리해줍니다.

 

#컴파일(Complie)?

소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정을 뜻한다.

 

#빌드(Build)?

Build란 작성한 코드를 실행 가능한 어플리케이션, 소프트웨어 산출물로 바꾸는 일련의 과정을 뜻한다. 컴파일 과정을 포함한다.

 

이러한 빌드 도구는 Maven, Ant 등이 있지만 신규 프로젝트에서는 Gradle이 사용되는 추세라고 합니다.


그럼 Gradle을 왜 사용할까요??

 

1) 간결한 스크립트를 가지고 있다.

아래의 Maven 같은 경우 xml 문법으로 작성하였기 때문에 여는 태그, 닫는 태그가 필요해서 가독성이 굉장히 떨어집니다.

pom.xml

하지만 Gradle의 경우 Groovy 문법을 사용하여 간결하고 가독성 좋게 작성할 수 있습니다.

build.gradle

2) 빌드 속도가 빠르다.

Gradle은 Maven과 비교하여 두 배 이상 최대 100배까지 빠르다고 합니다.

Gradle이 이렇게 빠른 이유는 아래의 기능들 덕분입니다.

  • 점진적 빌드(Incremental Builds)
    • 점진적 빌드란 모든 파일을 빌드하는 것이 아닌 변경된 파일들만 빌드하는 것을 뜻합니다.
    • 만약 10개의 파일이 이전에 컴파일 되었었는데 이 중에 5개만 변경되었다면 다시 컴파일 할 때 변경된 5개만 컴파일하는 것입니다.
    • 따라서 중복 빌드가 일어나지 않는 것이다.
  • 빌드 캐시(Build Cache)
    • 만약 두개 이상의 빌드가 일어나고 있다고 가정합니다. 이 중 하나의 빌드에서 사용되는 파일들이 다른 빌드에서도 사용된다면 빌드 캐시 기능을 사용하여 다른 파일에서 사용할 수 있습니다.
    • 이 기능을 통해 중복빌드가 일어나지 않아 빌드 시간이 단축됩니다.
  • 데몬 프로세스(Daemon Process)
    • 데몬 프로세스란 서비스의 요청에 응답하기 위해 오래 동안 살아있는 프로세스를 뜻합니다.
    • Gradle의 데몬 프로세스는 메모리 상에 빌드 결과물을 보관합니다.
    • 이로 인해 한번 빌드된 프로젝트는 다음 빌드에서 매우 적은 시간이 소요됩니다.

3) 멀티 프로젝트 빌드

대규모 프로젝트에서는 여러개의 모듈로 구성되는데 Gradle은 멀티 프로젝트 빌드 기능을 이용하여 따로 빌드 작업을 하는 번거러움을 줄일 수 있습니다.


Gradle 사용법

build.gradle 파일에 빌드정보를 정의하고 프로젝트에서 사용하는 환경 설정, 빌드방법, 라이브러리 정보 등을 작성합니다.

 

1) 플러그인 설정

미리 구성해 놓은 task들의 그룹이며 빌드과정에서 필요한 기본정보를 포함하고, 필요에 따라 정보를 수정하여 사용하라 수 있습니다.

 

2) 저장소 설정

필요한 라이브러리를 다운로드할 수 있는 저장소를 지정합니다.

jcenter, mavenCentral 등을 사용할 수 있습니다.

 

3) 의존관계 설정

필요한 의존을 설정할 수 있습니다.

  • api, complie : 프로젝트 컴파일 과정에서 필요한 라이브러리, 모두 빌드하기에 느리다, 권장X
  • implementation : 모듈 수정 시, 해당 모듈을 직접 의존하는 모듈만 빌드, 빠르다, 권장O
  • runtime : 프로젝트 실행 과정에서 필요한 라이브러리
  • testImplementation : 테스트에 사용하는 라이브러리 추가
  • annotationProcessor : 어노테이션 기반 라이브러리를 컴파일러가 인식하도록 한다.(Lombok, QueryDSL)

 

오늘은 Gradle에 대해 내용을 간단히 정리해보았습니다.

'여러가지 공부' 카테고리의 다른 글

코딩 네이밍 종류  (0) 2022.10.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함