그래들(1) 기본
그래들(Gradle)
Gradle은 Java와 다른 프로그래밍 언어의 프로젝트를 빌드하고 관리하기 위한 오픈 소스 빌드 자동화 도구이다 .
요약
: dependencies {} 블록에 선언된 라이브러리가 프로젝트에서 사용될 때 자동으로 해당 라이브러리를 다운로드하고 클래스 경로에 추가한다. 이를 통해 프로젝트의 의존성 관리가 편리해지며 외부 라이브러리를 쉽게 사용할 수 있게 된다.
<!-- // 라이브러리 및 모듈을 정의하는 부분 -->
<!-- dependencies-추가하고자 하는 라이브러리를 편리하게 넣을 수 있다. -->
dependencies {
<!-- Spring MVC를 사용한 RESTful서비스를 개발하는데 사용. -->
implementation 'org.springframework.boot:spring-boot-starter-web'
<!-- JUnit 전용 -->
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
그래들(Gradle) 설치
-
그래들 공식홈페이지에서 OS에 맞도록 설치
# 윈도우 https://gradle.org/releases/ # zip # 리눅스 https://gradle.org/releases/ # tar
- 그래들홈(GADLE_HOME) 설정
# 윈도우 # 제어판 > 시스템 > 고급 시스템 설정 > 환경변수 - 시스템변수(새로만들기) 클릭 C:\Users\MT01301\.gradle\wrapper\dists\gradle-7.6-bin\9l9tetv7ltxvx3i8an4pb86ye\gradle-7.6 # 리눅스 export GADLE_HOME=/opt/gradle/gradle-버전 source ~/.bashrc
-
패스(GRADLE_HOME + /bin) 설정
# 윈도우 > PATH C:\Users\MT01301\.gradle\wrapper\dists\gradle-7.6-bin\9l9tetv7ltxvx3i8an4pb86ye\gradle-7.6\bin # 리눅스 export PATH=$PATH:$GRADLE_HOME/bin source ~/.bashrc
- 완료
gradle -v # 정상이면 정보가 출력된다
그래들(Gradle) 기본 사용법
STEP1. 어플리케이션 생성
# 1. Gradle 프로젝트를 생성할 폴더 생성
mkdir gradle-study
# 2. init 옵션을 통해서 project 기본 파일과 폴더를 생성한다.
cd gradle-study
gradle init
# gradle init --type java-application #(한번에 자바프로젝트 생성 진행하는 방법)
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
basic: 기본 프로젝트 타입, 수동으로 구성해야 함
application: java application 타입, App.java 파일을 포함
library: java library 타입, Library.java 파일을 포함
Gradle plugin: java로 구현 된 gradle 플러그인 타입
# 3. 프로젝트 언어 설정
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Swift
Enter selection (default: Java) [1..5] 3
# 4. 싱글모듈, 멀티모듈 프로젝트 설정
Split functionality across multiple subprojects?:
1: no - only one application project
2: yes - application and library projects
Enter selection (default: no - only one application project) [1.. 2] 1
# 5. DSL 설정(Gradle 스크립트를 작성할 언어)
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2] 1
# 이후 새로운 API 를 사용해서 build 를 생성하겠냐는 질문에 기본 값을 선택. (새로운 API 가 어떤 변경이 있는지 잘 모름..)
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]no
# 6. 테스트 프레임워크 선택
# 익숙한 JUnit 4 선택한다.
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1
이후 프로젝트 이름 설정이 나오는데 이 부분은 생략한다.
STEP2. 실행
: Project를 실행하기 위해 gradle run 을 수행한다. 예상 결과는 다음과 같다.
# 예상 흐름
1. gradle run 명령어 입력
2. gradle-study\app\src\main\java\gradle\study\App.java 자바파일 실행
3. "Hello Java" 정상 수행
STEP3. 실행(폐쇄망 환경)
내 환경에서 실제로 해보니 아래와 같은 에러가 발생했다.
gradle run # 폐쇄망에서 에러 발생
폐쇄망에서는 gradle 을 통해 레파지토리에서 받지 못하도록 해야하므로 아래 빌드 내용을 지워준다
cd gradle-study\app\
vi bulid.gradle
dpendencies {
// 외부를 참조하는 implementation 항목을 제거
}
재시도 하면 정상작동 하는 것을 확인할 수 있다.
gradle run
> Task :app:run
Hello World!
BUILD SUCCESSFUL in 4s
2 actionable tasks: 2 executed
<-------------> 0% WAITING
> IDLE
build.gradle 디폴트 내용
: 최소한의 Gradle 소스코드는 다음을 참고하면 된다.
plugins {
id 'java' # 사용하는 언어
id 'org.springframework.boot' version '3.0.2' # 프로젝트의 스프링부트 프레임워크의 버전설정
id 'io.spring.dependency-management' version '1.1.0' # 프로젝트에 필요한 라이브러리를 관리해주는 툴(매니지먼트)의 버전
}
group = 'com.god' # 프로젝트정보
version = '0.0.1-SNAPSHOT' # 첫번째 자리 : 메이저 업데이트, 두번째 자리 : 마이너업데이트, 세번째 자리 : fix버전(오탈자, 이미지 변경)
sourceCompatibility = '17' # 자바버전
# dependencies 라이브러리를 다운받은 사이트
repositories {
mavenCentral()
}
# dependencies-추가하고자 하는 라이브러리를 편리하게 넣을 수 있다.
dependencies {
# compile : 자바코드를 실행가능한 바이트 코드로 변경 (바이트코드를 실행하면 컴퓨터는 인식하고 실행)
compileOnly 'org.projectlombok:lombok' # 롬복: 도메인(class)이 가져야할 getter, setter, builder등을 자동으로 코드생성 (@어노테이션) (단,컴파일에서만!)
annotationProcessor 'org.projectlombok:lombok:'
implementation 'org.springframework.boot:spring-boot-starter-web' # Spring MVC를 사용한 RESTful서비스를 개발하는데 사용.
testImplementation 'org.springframework.boot:spring-boot-starter-test' # JUnit 전용
}
tasks.named('test') {
useJUnitPlatform()
}
그래들(Gradle) 기본 패키징 방법
jar파일 패키징 생성
# 그래들 프로젝트 빌드 수행
gradle jar
BUILD SUCCESSFUL in 3s
2 actionable tasks: 1 executed, 1 up-to-date
# [루트]build/libs/ 안에 jar 파일이 생성된다.
# [루트]/build/libs/app.jar
프로젝트를 패키징하여 필요한 JAR 파일을 생성한다. 이제 배포도 가능해졌다.
jar 패키징 실행
java -jar build\libs\app.jar
build\libs\app.jar에 기본 Manifest 속성이 없습니다.
# 이 명령어는 -jar 옵션을 사용하여 JAR 파일을 실행행다.
# JAR 파일에는 메인 클래스(main class)가 META-INF/MANIFEST.MF 파일에 정의되어 있어야 한다.
# JAR 파일 내에 클래스 패스를 지정하는 것이 아니라, 해당 JAR 파일 안에 있는 메인 클래스를 실행한다.
# JAR 파일에 내장된 라이브러리 또는 의존성을 사용하고자 할 때 편리하다.
에러시 Manifest 속성을 아래와 같이 선언해주자.
cd gradle-study\app\
vi bulid.gradle
jar {
manifest {
attributes 'Main-Class': 'gradle.study.App'
}
}
# 재시도 한다.
# 정리
$ gradle clean
BUILD SUCCESSFUL in 3s
1 actionable task: 1 executed
--------------------------------------------------------------
# 패키징
$ gradle jar
BUILD SUCCESSFUL in 3s
2 actionable tasks: 1 executed, 1 up-to-date
--------------------------------------------------------------
# 실행
$ java -jar build\libs\myfirst-app.jar
Hello world!
지금까지 그래들(Gradle) 기본 사용방법을 알아보았다.
그래들(Gradle) 이클립스에서 사용법
STEP1. Gradle 어플리케이션 준비
신규생성 방식
- New > Other > Gradle Project
- Project name 설정 > Next.. Next….
- 완료
임포트(Import)방식
임포트 참고자료) https://javacan.tistory.com/entry/import-maven-project
- 그래들 스프링프로젝트 압축파일 준비.
- IDE 워크스페이스에 압축을 해제.
- File > Import > Existing Gradle Project (설치시 환경변수 잡았으므로 계속 NEXT)
- 완료
STEP2. settings.gradle 설정
// 프로젝트명과 루트 프로젝트 이름을 일치시켜야 한다. (저장후 STS 를 재시작!)
rootProject.name = 'ucb-back' //루트 프로젝트명
STEP3. Run Configurations 설정
메인어플리케이션.java 찾는 방법)
@SpringBootApplication 어노테이션이 존재하는 java 파일이다.
- 자동 생성
- 메인어플리케이션.java 우클릭 > Run As > 4 Spring Boot App
자동으로 Run Configurations 생성 완료
- 메인어플리케이션.java 우클릭 > Run As > 4 Spring Boot App
-
- 수동 설정
- 실행 환경별 프로퍼티스 Override 를 위해 아래 설정을 진행.
- 메인어플리케이션.java 우클릭 > Run Configuration.. -Spring Boot App - Spring Boot 탭
- Project 콤보박스: ucb
- main Type 텍스트박스: in.kbfg.ucb.UcbApplication
- Profile 콤보박스: local
이 콤보박스는 네이밍별 프로퍼티스가 존재하면 선택가능하다.
예시)
application-local.properties
application-stg.properties
- 인어플리케이션.java 우클릭 > Run Configuration.. -Spring Boot App - Arguments 탭
- Program arguments
start
- VM arguments
-Dspring.profiles.active=local
- Program arguments
STEP4. 실행
: 최종 실행(RUN)! 어플리케이션을 실행한다. (application.properties 에서 DocBase 를 확인하고 컨트롤러 요청한다!.)
// 부트에서 아래 설정이 DocBase 개념
server.servlet.context-path=값 //예시) /api
그래들(Gradle)에서 로컬레파지토리 사용하기(메이븐 활용편)
- 개발을 하다보면 효율적으로 누군가 만들어 놓은 라이브러리들을 가져다 쓴다.
- 자바(스프링)으로 개발을 한다면 보통 빌드 툴(Gradle, Maven)을 사용하여 라이브러리 관리를 한다.
- 원격 저장소(MavenCentral, Jcenter, google, …etc)에서 필요한 라이브러리들을 다운받아서 로컬 저장소 (Gradle : ~/.gradle 폴더, Maven : ~/.m2 폴더)에 저장한다.
- 로컬 저장소에서 찾고 없으면 원격 저장소에서 다운 받는다.
Leave a comment