# 개요
항상 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
Chat GPT
https://chat.openai.com/share/0a93ceee-548e-4da2-81cd-93a2b612486e
Jar 배포 관련
https://ink1234.tistory.com/12
https://stackoverflow.com/questions/21721119/creating-runnable-jar-with-gradle