# 개요

항상 Gradle을 쓸 때 IDE를 이용해서 빌드 및 실행을 했었는데 CMD로는 어떻게 할까?

그리고 IDE에서는 실행 할 때 알아서 빌드까지 진행해 주었는데 구분 동작은 어떻게 되는지 알아보자.

Gradle에 대한 세세한 정보는 여기서 다루지 않는다. 단순히 Gradle로 빌드하고 실행하는 것만 다룬다.

 


# Gradle Project Structure

  • settings.gradle: 프로젝트의 구성을 정의하는 설정 파일
  • build.gradle: 프로젝트 빌드 스크립트가 포함된 파일, Groovy나 Kotlin DSL을 사용
  • src/main: 메인 소스 코드 및 리소스가 있는 디렉토리
  • src/test: 테스트 소스 코드 및 리소스가 있는 디렉토리
  • build/: 필드 프로세스에서 생성되는 출력파일이 있는 디렉토리. 컴파일 된 class파일 빌드된 jar파일

  


# Gradle Wrapper

원래는 Gradle 빌드를 하려면 Gradle 설치를 따로 해야한다고 한다. 근데 옛날에 스프링부트로 개발할 때는 설치 없이도 잘 됐는데??

알고보니 Gradle Wrapper라는 것이 있다고 한다.

Gradle Wrapper는 미리 지정된 버전의 Gradle을 호출하도록 하는 스크립트다. Gradle 빌드를 사용하기 위해서는 알맞은 버전이 설치되어 있는데 매번 버전 업데이트를 하는 것이 비효율적이기 때문에 Gradle에서 프로젝트 생성시 내장 Gradle를 넣어주도록 했다.

Gradle 프로젝트 생성하면 기본적으로 생성되어 있는 gradlew이나 gradlew.bat 파일을 이용한다.

  • gradle-wrapper.properties: gradle wrapper 설정 파일. gradle 버전 및 다운로드 링크 기록
  • gradle-wrapper.jar: gradle wrapper 실행에 필요한 jar파일. gradle 래퍼 스크립트인 gradlew파일이 gradle을 다운로드하고 실행하는데 사용
  • gradlew/gradlew.bat: Unix / Windows 시스템에서의 Gradle Wrapper 스크립트. 프로젝트를 빌드하고 관리하는데 필요한 Gradle 실행 파일을 다운로드하고 실행

 


# Gradle 명령어를 이용하여 빌드

cmd로 빌드할 때는 gradlew / gardlew.bat 파일이 있는 root directory로 이동

gradle clean

IDE(IntelliJ)

CMD

 


gradle build

IDE(IntelliJ)

CMD

 


# .jar파일 실행

CMD에서 java -jar {projectName}.jar 파일을 실행하기 위해서는 build.gradle 파일에 다음과 같이 작성해야한다.

jar {
    manifest {
        attributes 'Main-Class': 'com.kh.Main'
    }
    from {
        configurations.runtimeClasspath.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
  • manifest 부분: JAR파일 내의 manifest 파일에 대한 속성을 지정, 버전, 주요 클래스, 클래스 경로 등의 정보가 포함됨
  • from 부분: Dependency가 필요할 때 추가함
  • DuplicateStrategey 부분: 중복 파일이 발견되면 하나만 JAR에 포함하고 나머지는 제외 

gradle 빌드 이후에 다음 명령어를 통해 Jar파일을 실행한다.

java -jar {jar파일_경로}

 


# Reference

Gradle 빌드 관련

https://jammdev.tistory.com/210

 

[Gradle] Gradle 사용법 - 설치, 초기화 및

지난 글에서는 Gradle 이 무엇인지 알아보았다. 이번에는 Gradle 을 설치하고 사용해보는 튜토리얼을 진행해보려 한다. 해당 내용은 Gradle 의 Getting Started 내용을 읽고 작성하였다. 1. Gradle 설치 & Gradl

jammdev.tistory.com

Chat GPT

https://chat.openai.com/share/0a93ceee-548e-4da2-81cd-93a2b612486e

 

Jar 배포 관련

https://www.inflearn.com/questions/923059/%EC%95%B1-%EB%B0%B0%ED%8F%AC%EC%8B%9C-jar-%EC%A7%88%EB%AC%B8

 

앱 배포시 jar 질문 - 인프런

앱을 배포하는 도중 계속 에러가 나 질문 올립니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.4' id 'io.spring.dependency-management' version '1.1.0'...

www.inflearn.com

https://ink1234.tistory.com/12

 

[Gradle] dependency 가 포함된 jar 만들기

프로젝트에 Dependency를 추가 할때 Gradle의 dependencies를 사용해서 외부에서 라이브러리들 다운로드해서 임포트를 하는 경우가 있습니다. 12345678910dependencies { compile group: 'org.apache.httpcomponents', name: 'h

ink1234.tistory.com

https://stackoverflow.com/questions/21721119/creating-runnable-jar-with-gradle

 

Creating runnable JAR with Gradle

Until now I created runnable JAR files via the Eclipse "Export..." functionallity but now I switched to IntelliJ IDEA and Gradle for build automation. Some articles here suggest the "application" ...

stackoverflow.com

 

+ Recent posts