Build Tool ( Maven, Gradle )

TopOfTheHead·2025년 10월 18일

Spring Boot

목록 보기
2/26

빌드 도구 ( Build Tool ) :
프로젝트빌드 / 의존성 관리 / 테스트 자동화 도구

。개발자의 소스코드를 실행 가능한 Application으로 빌드하는 역할을 수행.
▶ 각 프로그래밍 언어에 맞는 Project빌드Dependency를 관리

Maven :
XML Script 기반으로 pom.xml을 이용해 자동으로 librarydependency를 관리.

Maven clean , install
view - Tool Windows - Maven - 프로젝트명 - Lifecycle - clean 우클릭 - Run Maven Build

Gradle :
프로젝트 전체를 관리하는 Maven 이후 출시한 Groovy 기반 Java , Kotlin 등의 빌드 자동화 도구

build.gradle를 통해 작성하여 dependency를 관리.

gradle작업task / job ( 큰 단위 / 작은 단위 )로 구분하여 작업을 수행

컴파일 / 의존성 다운로드 / JAR파일 생성의 역할을 수행

gradle에 의해 빌드를 수행하는 경우 src/test테스트 파일을 우선적으로 구동하여 테스트src/main.java패키징하여 빌드
빌드파일에서 src/test는 제외

IDE를 통해 Java 어플리케이션을 구동하는 원리?
JAVA컴파일gradle에 의해 javac를 호출해서 전체 .java.class컴파일을 수행 후 실행

build 디렉토리.class 파일컴파일되며 향후 어플리케이션 실행 시 해당 파일을 기반으로 실행됨
gradlew clean build를 통해 제거가 가능하며, 제거 후 실행 시 다시 컴파일을 수행

어플리케이션 실행테스트파일에 대해 gradle이 작성한 테스트결과를 확인하는 방법
gradle빌드src/test테스트 파일의 구동을 선행적으로 수행
▶ 수행한 테스트 결과를 다음에 작성

build - reports - tests - test - index.html에서 gradle이 작성한 테스트 결과를 확인 가능

gradlew : gradle에게 명령을 전달

  • gradlew build war : WAR파일 빌드

  • gradlew build clean : 빌드파일을 삭제
    gradle캐싱을 통해 빌드파일을 재활용하여 실행하므로, 빌드파일에 오류 발생 시 빌드파일 삭제 후 다시 생성

build.gradle :
Gradle을 사용하는 Project의 Build Script 파일로서 dependency , Compile , Plug-in , Test의 관리 및 설정이 가능.
Projectbuild, test, production을 자동화하는 역할을 수행.

Groovy , Kotlin으로 작성가능.
XML 기반 Build Script에 비해 관리가 용이.


build.gradle 파일 주요 구성요소

  • plugins { id 'plugin이름' }
    。본 프로젝트에 활용한 Gradle Plugin을 정의하는 코드 블록

    Gradle Plugin 종류
    java : java project 용
    java-library : java library 용
    application : 실행 가능한 Application
    kotlin : Kotlin Project 용
    com.android.application : Android App Project 용
    war : WAR 파일 생성 시 선언

  • group , version :
    Project그룹명Version을 정의.
    빌드 도구에서 Packaging 시 활용하는 메타데이터

    group = "패키지명" : 도메인을 거꾸로 기술하여 그룹명을 정의
    com.회사명.프로젝트명.루트

    version = "버전명" : 프로젝트버전을 정의
    ▶ 이후 JAR 빌드JAR 파일명에 반영됨

  • repositories { }
    Project에서 사용할 Dependency 저장소를 지정.
    ▶ 일반적으로 Maven Central ( Maven 중앙 저장소 : mavenCentral() ) , JitPack 등을 정의

  • dependencies { 스코프 '라이브러리 주소' }
    Project에서 사용할 외부 라이브러리의존성을 정의.
    MavenRepository에서 필요한 라이브러리를 찾아서 정의

    Maven Repository : Java 모듈 / 라이브러리를 업로드 및 다운로드하는 저장소

    의존성 라이브러리패키지External Libraries에 설치됨

    Scope 키워드
    implementation : 라이브러리Compile + Runtime시 둘다 사용하도록 선언
    complieOnly : 라이브러리Compile 시에만 사용하도록 선언
    runtimeOnly : 라이브러리Runtime 시에만 사용하도록 선언
    testImplementation : 라이브러리Test 시에만 사용하도록 선언
    annotationProcessor : Annotation Processing라이브러리 사용 시 선언

  • application { mainClass = '메인클래스' }
    Application의 Main Class 지정 시 사용.
    ▶ 해당 설정을 지정 시 gradle run 명령어로 Application 실행이 가능.

gradle 명령어

  • ./gradlew test :
    src/test에 존재하는 테스트 코드를 실행

  • ./gradlew build
    빌드하여 JAR 파일을 생성

  • ./gradlew clean build
    테스트코드를 수행 및 통과한 경우 기존 JAR 파일을 삭제 후 빌드하여 JAR파일을 재생성
profile
공부기록 블로그

0개의 댓글