ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Boot] 프로젝트 gradle 버전 변경 , h2
    Backend/개발 2021. 8. 3. 00:41
    반응형

    TIL 33일차 개인프로젝트 기록 

    이 프로젝트 처음에 생성할때 책을 보고 했는데, 블로그를 찾다보니 전체적으로 버전 업그레이드를 하신 것 같아서 따라 업그레이드를 해야겠다.

    참고 링크 : https://jojoldu.tistory.com/539

    기존 프로젝트 버전 확인

    // gradle/wrapper/gradle-wrapper.properties
    
    #Sun Jun 28 15:14:06 KST 2020
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
    

    나는 4.10.2 버전이었다

    6.7.1 버전으로 변경하고 build를 다시 해주었다.

    gradle 6.7 버전에 맞는 build.gradle

    • 참고 : annotation processor ( 4.6 버전 이후 ) 추가
    implementation('org.projectlombok:lombok') 
    annotationProcessor('org.projectlombok:lombok')
    // 이렇게 변경해 주었다.
    // 밑에 4개는 자바와 스프링부트 사용하기 위한 필수 플러그인  -> 앞으로 계속 추가해놓으면됨
    plugins {
        id 'org.springframework.boot' version '2.4.1' // RELEASE 삭제
        id 'io.spring.dependency-management' version '1.0.10.RELEASE' // 스프링 부트 의존성 관리해주는 플러그인이라 꼭 추가해야함
        id 'java'
    }
    group 'com.project.auction'
    version '1.0.4-SNAPSHOT-'+new Date().format("yyyyMMddHHmmss")
    sourceCompatibility = 1.8
    
    /*
     * 각종 의존성(라이브러리)등을 어떤 원격 저장소에서 받을지 정함.
     * 주로 mavenCentral을 사용했는데 라이브러리 업로드 난이도가 쉬워진(?) jcenter를 요즘 사용하는 추세임
     */
    repositories {
        mavenCentral()
        jcenter()
    }
    
    // for Junit 5 부터는 필수로 선언되어 있어야함
    test {
        useJUnitPlatform()
    }
    
    
    dependencies {
        /*
         * 추가
         */
        implementation('org.springframework.boot:spring-boot-starter-web')
        implementation('org.springframework.boot:spring-boot-starter-mustache') // 4장. 머스테치 스타터 의존성 추가
    
        // lombok
        implementation('org.projectlombok:lombok')
        annotationProcessor('org.projectlombok:lombok')
        testImplementation('org.projectlombok:lombok')
        testAnnotationProcessor('org.projectlombok:lombok')
    
        implementation('org.springframework.boot:spring-boot-starter-data-jpa') // 스프링부트용 Sprin됨g data jpa 추상화 라이브러리. 부트 버전에 맞춰 버전 관리해줌
        implementation('com.h2database:h2') // 인메모리 관계형 데이터베이스. 메모리에서 실행되므로 어플리케이션 재시작마다 초기화
        testImplementation('org.springframework.boot:spring-boot-starter-test')
    
    
        implementation 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.2' // template engine
    
    }
    

    설정은 블로그를 보면서 따라해서 따로 적지 않겠다.

    create table 쿼리가 정상수행이 되지 않은 이유 - application.yml 설정을 변경해줘야하는것인데 문제가 test랑 main/resources에 application.yml이 각각 하나씩 있었다!

    자꾸 헷갈려서 main이랑 test 중 하나씩만 바꿨던것 같다.. ;; 블로그 따라가면 해결 됨!

     


    Gradle wrapper

    출처 :Gradle 빌드시스템 기초 [ 티스토리 블로그]

     

    Gradle wrapper를 사용하는 목적은, 이미 존재하는 프로젝트를 새로운 환경에 설치할 때 별도의 설치 없이 곧 바로 빌드하기 위해서이다. (wrapper가 있으면 로컬에 설치된 gradle, java 버전에 영향을 받지 않는다.)

     

    내가 저번에 gitignore에 gradlew, gradlew.bat을 추가해놨었는데 그게 android studio만 추가하는 주석이었던것 같다. 이게 없으면 다른 환경에서 실행이 안될텐데 .. 다시 gitignore에서 제거 해 주었다.

     

    컴퓨터에 gradle이 아예 설치가 안돼있어서 brew로 gradle 설치하고 gradle wrapper --gradle-version 6.7.1로 다시 설치 해주었더니 gradlew, gradlew.bat파일이 생겼다!

    maven프로젝트에서는 mvnw 이런 파일이 wrapper파일인 듯 하다.

     


    git commit시 line seperating warning 에러

    출처 : 네이버 블로그 : Dreamy님


    window랑 mac을 번갈아 쓰다보면 crlf, lf 빈칸 줄넘김등이 차이가 나서 git에서 오류가 나는 것 같다.

     


    H2 database

    H2DB는 자바 기반의 오픈소스 RDBMS 이다.


    H2의 특징 두가지를 말한다면 초 경량 DB인메모리 DB(휘발성)이다.


    로컬에 저장하지 않고, 메모리상에 올리므로 컴퓨터가 꺼지거나 프로젝트를 종료하면 사라진다. 하지만 속도가 빠르고 용량이 작아 테스트용으로 좋다. (캐싱용으로 쓰일 수도 있지만 굳이 RDBMS를 캐싱용으로 쓰기보단 NoSQL을 쓰는 것이 나을 것이다.)

     

    H2DB는 서버 모드와 임베디드 모드의 인메모리 DB기능을 지원하며, 브라우저 기반 콘솔모드를 이용할 수 있다.


    홈페이지에서 설치해서 h2.sh파일을 실행하여 사용 할 수도 있고 프로젝트에서 maven, gradle의 dependency로 추가하면 2MB 크기의 라이브러리로 사용할 수 있다.

    dependency

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    configuration

    spring.datasource.url=jdbc:h2:mem:testdb
    spring.datasource.driverClassName=org.h2.Driver
    spring.datasource.username=sa
    spring.datasource.password=password
    spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

     

    출처

    댓글

Designed by Tistory.