기술없는 기술 블로그 RSS 태그 관리 글쓰기 방명록
2021-12-29 22:18:54

 

이동욱님이 집필하신 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'에서 제공하는 build.gradle에서 플러그인 관리와 스프링 이니셜라이저에서 기본적으로 제공하는 코드에 차이가 있었다.

 

buildscript{
    ext{
        springBootVersion = '2.1.7.RELEASE'
    }
    repositories{
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

책의 gradle

 

plugins {
    id 'org.springframework.boot' version '2.6.1'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

스프링 이니셜라이저 gradle

 

우선 코드 상에서 확인가능한 차이점은

 

1. buildscript + apply plugin에서 plugins( id + version ) 으로 변경.

buildscript 내부에서 ext를 통해 build.gradle에서 사용할 전역변수를 선언 후 ${변수명} 을 통해 사용하는 것이 아니라

플러그인 id와 version을 한 줄에 표기하는 방식으로 바뀌었다는 점

 

책에서 설명하는 방식의 buildscript 방식은 그레이들 4.3 이전의 방식으로 4.3 이후 그루비 그레이들은 plugins로 관리하는게 웹 문서에서 알려주는 표준 방식이라 생각 할 수 있을 것 같다.

 

빌드 스크립트를 찾아보면서 그레이들 관리가 Groovy DSL과 Kotlin DSL으로 나뉘는 점, 코틀린은 그레이들 5.0 이후 제공되는 기능이지만 그루비는 빌드 이전까지 오탈자 발견 등의 IDE 지원이 불가능하지만 코틀린은 가능하다는 장점, 안드로이드 개발자에겐 유용하다는 점이 있지만 스프링 이니셜라이저에서는 그루비로 그레이들을 제공해주었고, 그루비 DSL이 지원이 중단된다는 이야기도 없으니 개인의 취향 혹은 공부 삼아서 해보는 것도 좋을 것같다.

나중에 코틀린 변경으로 하는 점도 조사해서 포스팅 해봐야겠다.

 

다만 그레이들 5.0 이 후 부터는 롬복등에서 사용하는 어노테이션을  사용하기 위해 조금의 더 수정이 필요하다는 점과 실제 현업에서 아직 JUnit4와 그레이들 4를 사용하기에 책과 블로그에서 그레이들 4.10을 사용하신다는 점을 알려주셨다.

https://github.com/jojoldu/freelec-springboot2-webservice/issues/2

 

P74 테스트코드에서 에러가 발생합니다. · Issue #2 · jojoldu/freelec-springboot2-webservice

HelloResponseDtoTest.java에서 메소드 실행 시 아래와 같은 에러가 발생합니다. Testing started at 오후 11:08 ... Task :cleanTest UP-TO-DATE Task :compileJava FAILED C:\Users\ssooy\Desktop\dev\springboot-book\src\main\java\c...

github.com

https://kkambi.tistory.com/155

 

[gradle] gradle 5부터 lombok의 설정을 신경써야 한다

오류 상황 //build.gradle dependencies { //Util implementation "org.projectlombok:lombok" } //오류 메세지 error: variable courseRepository not initialized in the default constructor - build.gradle에..

kkambi.tistory.com

2. apply plugin: eclipse가 plugins에서 보이지 않는다는 점.

 

https://docs.gradle.org/current/userguide/eclipse_plugin.html

 

The Eclipse Plugins

To use either the Eclipse or the Eclipse WTP plugin, include one of the lines in your build script: Example 1. Using the Eclipse plugin build.gradle plugins { id 'eclipse' } build.gradle.kts Example 2. Using the Eclipse WTP plugin build.gradle plugins { id

docs.gradle.org

문서를 조금 찾아보니 자바 이클립스와의 호환성을 위해서 추가하던 플러그인으로 이클립스-웹프로젝트의 경우에는 eclipse-wtp로 수정해야하고 eclipse-wtp를 포함할 경우 eclipse는 포함하지 않아도 된다라는 내용이다.

 

아무래도 외부 프로젝트와 호환성을 위해 추가하신 내용인 것 같기도하고.. 아직은 잘 모르겠다.