본문 바로가기
백엔드/웹 개발

Maven 프로젝트 Gradle로 변환하기

by study_yeon 2023. 8. 16.

◎ Maven 프로젝트를 Gradle로 변환하기

- maven과 gradle은 빌드관리도구이다
- 최근에는 gradle을 많이 사용하기 때문에 maven으로 설정된 코드를 활용하고 싶을 때 gradle로 변경이 필요하다

 

 

1. 변경하고자 하는 maven 파일 임포트 하기

- 상단의 File > Import > Existing Maven Projects > maven 프로젝트가 저장된 경로 설정

* 경로 설정 전, 다운로드 받은(가지고 있는) maven 파일은 원하는 폴더(app > jpa 폴더)에 넣어 경로로 설정하기

-  경로를 찾으면 Projects에 pom.xml 파일이 확인 됨 (체크 하고 finish) 

 

※ 메이븐을 그레이들로 설정하기 위해
상단의 Window > Show view > Terminal 열어서 명령(gradle init) 입력
gradle init : 해당 프로젝트의 pom.xml 파일이 있는 경로로 이동

-> 환경변수 설정이 안되어 있고 그레이들이 없어서 오류 발생 


2. 그레이들 다운

▷ 구글에 gradle 검색, 접속하여 다운로드 
https://gradle.org/

 

Gradle Build Tool

Accelerate developer productivity. Gradle helps teams build, automate and deliver better software, faster.

gradle.org

Install Gradle 8.2.1  > Installing manually > Binary-only 

-> 압축파일이 다운로드 됨


▷ 다운로드 파일 압축풀기

- bin 폴더 안에 각종 실행파일이 있으므로 C:\Users\admin\Downloads\gradle-8.2.1\bin 의 경로 확인
- bin 폴더 gradlegradle.bat파일이 있는지 확인하기


▷ C:\dev\ide 경로에 압축 푼 파일 붙여넣기
- ide는 개발 툴 보관 폴더


3. 환경 변수 작업 (path에 등록하기) 

- 어떤 위치에서도 내가 필요한 프로그램을 불러낼 수 있음

더보기

※ (참고) 환경 변수
윈도우 운영체제에서 사용하는 설정 정보가 담겨있는 변수
윈도우에서 cmd로 파일을 찾거나 실행을 시킬 때 현재 위치에 파일이 존재하지 않으면 위와 같이 "내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다." 라는 에러가 발생

실행파일의 경로가 환경변수 path에 제대로 세팅되어 있다면 어떤 위치에서도 bin에 있는 프로그램들을 불러낼 수 있으므로 환경변수 설정은 필수로 하자 

 

* 환경변수 종류
① 사용자 계정 - admin에 대한 사용자 변수

② 시스템 전체 계정 - 시스템 변수(모든 컴퓨터 사용자에게 영향 - 공용PC 등)

 

▷ 내 PC(우클릭) > 속성 > 고급 시스템 설정 > 환경 변수

 시스템 변수에서 새로만들기

변수 이름 : GRADLE_HOME

변수 값 : 디렉터리 찾아보기, gradle을 다운로드한 경로 선택 

-> GRADLE_HOME 이름(별명)으로 그레이들이 설치된 장소로 접근 가능해짐 

시스템 변수에서 Path 설정

Path 눌러 새로만들기에 gradle의 bin 경로 작성

%GRADLE_HOME%\BIN 입력

 

%GRADLE_HOME% : 이름에 %를 붙이면 폴더명을 의미

③ 사용자 계정에도 동일하게 변수 이름과 값을 설정하여 Path에 등록한다

3-1 환경변수에서 설정한 기능 확인

▷ cmd열어 명령어에 gradle이라고 작성

-> gradle이 있는 위치가 아니지만 gradle이 작업 가능해진다


4. 메이븐으로 빌드하고 있던 프로젝트를 그레이들로 변경하기 위한 명령어 입력

▷ 상단의 Window > Show view > Terminal 열어서 명령(gradle init) 입력
해당 명령은 메이븐의 설정파일 : pom.xml을 이용하여 그레이들의 설정파일로 변경해줌(build.gradle, setting.gradle)

 

gradle init 입력 

해당 프로젝트의 pom.xml 파일이 있는 경로로 이동

> Generate a Gradle build from this? : yes

Maven을 찾았으니 메이븐을 기반으로 빌드할 것인가

> Select build script DSL : 1: Kotlin 2: Groovy :  Groovy

스크립트언어(DSL)은 코틀린을 안배웠으니 Groovy로 설정

> Generate build using new APIs and behavior : 엔터(yes)

-> 설정완료 

그레이들 파일 설정 전                                       /                                               그레이들 파일 설정 후


5. 만들어진 그레이들 파일들을 필요한 설정으로 수정하기

 

▷ 메이븐 설정파일 삭제하기

- pom.xml, mvnw, mvnw.cmd 

- 그레이들로 사용할 것이니까 필요 없음

삭제 완

 

5-1. settings.gradle 
- 프로젝트 이름하고 동일하게 설정

/*
 * This file was generated by the Gradle 'init' task.
 */

rootProject.name = 'cardatabase04'


5-2. build.gradle 
설정 후 생성된 빌드 파일의 dependencies에서

api 'org.springframework.boot:spring-boot-starter-data-rest:2.5.3'은 남기고 나머지 삭제

- 만들어진 그레이들 설정의 api라는 지시어가 implementation이 되어야함
implementation 'org.springframework.boot:spring-boot-starter-data-rest' 
-> 그레이들에서 더이상 지원하지 않는 지시어 api를 변경하고 버전 통일을 위해 2.5.3을 지우기

- 기존에 설정한 snippets의 dependencies 설정 가지고오기
- 데이터베이스는 마리아디비로 설정

/*
 * This file was generated by the Gradle 'init' task.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.1.2'
	id 'io.spring.dependency-management' version '1.1.2'
}

group = 'com.packt'
version = '1.0'
// description = 'cardatabase04'
sourceCompatibility = '17'
	
repositories {
	mavenCentral()
}

dependencies {

	///1. MVC 개발 라이브러리
	// MVC 환경 개발에 필요한 필수 라이브러리
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-rest'
	// 타임리프를 뷰 템플릿으로 사용할때 필요(jsp는 제스퍼)
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	// 타임리프 뷰 템플릿 레이아웃 기능 적용
	implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
	
	///2. 데이터베이스를 다루는 기술(3개 1. JPA 2. MyBatis 3. JDBC TEMPLATE)
	// jpa방식 기술로 개발할때 필요
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
/*	당장 필요하지 않은 기술 */	
	// jdbc Template방식 기술로 개발할때 필요
//	implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
	// 순수 jdbc기술로 개발할때 필요
//	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	// 대한민국에서 가장 많이 사용하고 있는 데이터베이스 기술
//	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2'

	///3. 실행시 필요한 데이터베이스 jdbc 드라이버(실행하고자 하는 것 주석 열기)
//	runtimeOnly 'com.h2database:h2'
//	runtimeOnly 'com.mysql:mysql-connector-j'
//	runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
	runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'


	// 개발할때 소스 자동생성 실행시 필요한 라이브러리
	annotationProcessor 'org.projectlombok:lombok'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	
	// 테스트 라이브러리
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	//	testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.2'


}

test {
	useJUnitPlatform()
}


5-3. 그레이들 추가

- 이클립스에 그레이들 사용한다고 설정하는 작업

- 메이븐과 그레이들이 충돌 할 수 있으므로 메이븐 삭제하기

프로젝트 우클릭 > Configure > Add Gradle Nature > Maven 삭제하기



6. 클래스 파일 오류 해결

- import된 버전이 달라서 오류 발생

도메인의 import를 자카르타로 변경 


7. application.properties 설정

- rest에 대한 설정 파일임
- yml로 확장자 수정

# 스프링부트 서버 위치
server:
  port: 80
  
# 스프링 기본 설정
spring:
  # 데이터베이스 연결 설정(4가지)
  datasource:
    url: jdbc:mariadb://localhost:3306/webdb
    username: webuser
    password: webuser
    driver-class-name: org.mariadb.jdbc.Driver
  # jpa 기본설정(데이터베이스 연결 라이브러리 기본설정)
  jpa:
    generate-ddl: true
    hibernate:
      ddl-auto: create-drop
    show-sql: true
  # REST API 서버로 만들 때 REST서비스 기본 시작주소
  data:
    rest:
      basePath: /api


8. 언어 설정

window > preferences > general > Content Types 

- Default encoding : UTF-8로 설정이 안된 부분 변경 

- 빈 칸은 그대로 두기

 

변경 완료!