[Gradle] Gradle 개념 및 프로젝트 구조

해니·2023년 1월 27일

Gradle

목록 보기
1/1
post-thumbnail


1. Gradle이란?



개념

  • 가장 최근에 나온 자바 빌드 도구로 그루비(Groovy) 문법을 사용함
  • Build.gradle에 스크립트를 작성하며, 대규모 프로젝트에서 복잡해지는 경향이 있는 XML 기반 스크립트에 비해 관리가 편하다는 장점이 있음
  • Gradle은 현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있기도 함



특징


1. 간결한 스크립트

  • Gradle 이전의 빌드 도구인 Ant와 Maven은 XML 문법으로 스크립트를 작성하였음
  • XML은 여는 태그와 닫는 태그(이른바 껍데기 태그)를 넣어야 하기 때문에 복잡한 빌드 스크립트를 작성하기가 어려우며 가독성이 떨어짐
  • Gradle은 Groovy 문법으로 간결한 스크립트를 작성할 수 있음

2. 빌드 속도

  • Gradle은 캐싱(caching)을 하기 때문에Ant나 Maven 같은 이전 빌드 도구보다 빌드 속도가 빠름
  • Gradle vs Maven Comparison에서는 빌드 캐시(Build cache)를 이용할 경우Gradle과 Maven의 빌드 속도가 최대 100배까지 벌어질 수 있음

3. 멀티 프로젝트 빌드

  • 대규모 자바 프로젝트는 대부분 다중 모듈로 구성됨
    • 하나의 프로젝트 안에 여러 모듈이 동시에 개발되며, 각 모듈이 공통으로 사용하는 모듈도 만들어지게 됨
  • 여러 모듈 동시에 개발되는 경우 각각 따로 빌드 작업을 하면 번거로울 뿐만 아니라 실수가 생기기 쉬움
  • Gradle의 멀티 프로젝트 빌드 기능을 이용하면 이런 번거로움과 실수를 획기적으로 줄일 수 있음






💡 컴파일 (Compile)

  • 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정

  • 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업

    • 컴파일을 해주는 프로그램을 컴파일러(Compiler)라고 함
  • 자바의 경우, 자바가상머신(JVM)에서 실행가능한 바이트코드 형태의 클래스 파일이 생성됨

    • .java라는 자바 클래스 파일을 바탕으로 .class라는 클래스 파일이 생성됨



💡 빌드(Build)

  • 소스코드 파일을 실행가능한 소프트웨어 애플리케이션으로 만드는 일련의 과정

    • JAR, WAR 등의 실행 가능한 파일을 만드는 작업
  • 빌드의 단계 중 컴파일이 포함이 되어 있는데 컴파일은 빌드의 부분집합이라 할 수 있음



💡 빌드 도구(Build Tool)

  • 빌드 과정을 도와주는 도구

  • 빌드 과정을 자동화하여 관리하는 기능을 하기 때문에 빌드 관리 도구(Build Management Tool) 또는 빌드 자동화 도구(Build Automation Tool)라고 불리기도함

  • 개발자가 스크립트를 작성하여 다양한 작업을 수행할 수 있게 함
    ex) 소스 코드 컴파일 또는 패키징 , 테스트 자동 수행 , 의존성 주입 , 배포 등

  • 자바 프로젝트에서 사용되는 빌드 도구의 종류로는 앤트(Ant) , 메이븐(Maven) , 그래들(Gradle)이 있음





2. 프로젝트 구조


.
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── App.java
    │   └── resources
    └── test
        ├── java
        │   └── AppTest.java
        └── resources


  • build.gradle
    Gradle 기본 빌드 설정용 스크립트 파일
    프로젝트의 빌드 처리 및 의존성에 대한 정의

  • gradle 디렉토리
    Gradle 환경을 래핑한 wrapper 파일들이 저장되는 디렉토리

  • gradle/wrapper/gradle-wrapper.properties
    프로젝트를 빌드에 사용할 gradle 버전을 포함하여, gradle 실행에 필요한 설정 정보가 기록되는 파일
    다른 버전의 gradle을 사용하여 프로젝트를 빌드하고 싶다면 해당 파일 내용을 수정

  • gradlew
    macOS 및 Linux에서 실행하기 위한 gradle 구현체

  • gradlew.bat
    Windows용 gradle 구현체

  • settings.gradle
    프로젝트 설정 정보를 담은 파일 (프로젝트 명 , 서브 프로젝트 정보 등)

  • src 디렉토리
    Gradle 프로젝트에서 사용하는 소스 코드나 리소스, 테스트 코드 등의 파일이 저장되는 디렉토리
    maintest 라는 2개의 폴더가 포함됨

  • src/main 디렉토리
    애플리케이션 구현에 필요한 소스 코드를 저장하는 디렉토리
    언어별로 하위 디렉토리가 구분되며, 기본적으로 App.java 파일이 포함됨

  • src/test 디렉토리
    애플리케이션 테스트에 필요한 단위 테스트 파일을 모아두는 디렉토리
    빌드시에 포함되지 않지만, CI/CD 파이프라인에서는 중요한 역할을 함




💫 CLI vs IDE

  • CLI 환경에서 gradle init으로 직접 생성하는 경우 , src 디렉토리와 build.gradle 파일은 app/ 경로 하위에 생성된다.
  • IDE에서 생성하는 프로젝트 구조에서는 app/ 디렉토리가 생성되지 않으며, src 디렉토리와 build.gradle 파일 모두 프로젝트 루트에 생성된다.










출처

https://willbesoon.tistory.com/93
[Gradle] Gradle 프로젝트는 어떻게 구성되어 있을까?|작성자 꼼꼼한 재은씨
https://blog.naver.com/PostView.naver?blogId=sqlpro&logNo=222666588911&categoryNo=7&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
https://yozm.wishket.com/magazine/detail/1700/

profile
💻 ⚾️ 🐻 이전했어요..! ➡️ https://dev-haeni.tistory.com/

0개의 댓글