상세 컨텐츠

본문 제목

Gradle 의존성 정리

개인 공부/Spring-boot,Java

by 카페코더 2020. 6. 22. 16:21

본문

반응형

build.gradle 파일 내 작성되는 의존성에 대해 정리합니다.
버전 4.10.2를 기준으로 포스팅됩니다.

2020년 6월 27일 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'

group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.projectlombok:lombok')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('com.h2database:h2')
    compile('org.springframework.boot:spring-boot-starter-mustache')
    compile('org.springframework.boot:spring-boot-starter-oauth2-client')

    testCompile('org.springframework.boot:spring-boot-starter-test')
}

/*
디펜던시 내용 정리는 카페코더 블로그에 포스팅.
 */

buildscript

buildscript는 말 그대로 빌드를 위해 실행되는 스크립트다. Gradle 자체의 기능을 사용할 땐 필요 없으며,
외부 라이브러리 등을 사용할 경우 필요하다.

ext

build.gradle에서 사용하는 전역변수를 설정하겠다는 의미다.

여기서는 springBootVersion 전역변수를 생성하고, 그 값을 '2.1.7.RELEASE'로 하겠다는 의미다.
즉, 'spring-boot-gradle-plugin' 이라는 스프링 부트 그레이들 플러그인의 '2.1.7.RELEASE'을 의존성으로 받겠단 의미다.

apply

앞서 선언한 플러그인 의존성들을 적용할 것인지를 결정하는 코드다.

'io.spring.dependency-management' 플러그인은 스프링 부트의 의존성을 관리해 주는 플러그인이라 꼭 추가해야 한다.

위에서 선언한 4개의 플러그인들은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이니 항상 추가해야 한다.

repositories

각종 의존성들을 어떤 원격 저장소에서 받을지를 정한다.

기본적으로 mavenCentral을 많이 사용하지만, 최근엔 라이브러리 업로드 난이도 때문에 jcenter도 많이 사용한다.
이것은 번외에서 추가 설명하겠다.

dependencies

dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳이다.

인텔리제이의 경우, 메이븐 저장소의 데이터를 인덱싱해서 관리하기 때문에, 커뮤니티 버전을 사용해도 의존성 자동완성이 가능하다. (ex: compile('org 까지 입력 후, [Ctrl + Space] 커맨드를 입력하면, 해당되는 라이브러리의 목록을 볼 수 있다.

 

+ 번외

mavenCentral

mavenCentral은 이전부터 많이 사용된 저장소지만, 본인이 만든 라이브러리를 업로드 하기위해서는 정말 많은 과정이 필요하다. 그러다 보니 개발자들이 직접 만든 라이브러리를 업로드 하는 것이 힘들어 점점 공유가 안되는 상황이 발생했다. 

jcenter

jcenter는 위 mavenCentral의 문제점인 라이브러리 업로드를 간단하게 하였다.

또한, 여기서 더 나아가 jcenter에 라이브러리를 업로드 하면, mavenCentral에도 업로드 될 수 있도록 자동화를 할 수 있다. 이런 장점들로 현재 개발자들의 라이브러리가 점점 jcenter로 이동하고 있다.

 

dependecies 내 의존성 목록

  • 스프링 웹 스타터 - org.springframework.boot:spring-boot-starter-web
  • 스프링 웹 테스트 - org.springframework.boot:spring-boot-starter-test
  • lombok - org.projectlombok:lombok
  • Spring Data Jpa 추상화 라이브러리
    - org.springframework.boot:spring-boot-starter-data-jpa
    • 스프링 부트용 SPring Data Jpa 추상화 라이브러리다.
    • 스프링 부트 버전에 맞춰 자동으로 JPA관련 라이브러리들의 버전을 관리한다.
  • h2Database - com.h2database:h2
    • 인메모리 관계형 데이터베이스다.
    • 별도의 설치가 필요 없이 프로젝트 의존성만으로 관리할 수 있다.
    • 메모리에서 실행되기 떄문에 애플리케이션을 재시작할 때마다 초기화된단 점을 이용해 테스트용도로 많이 사용된다.
    • 필자는 JPA의 테스트, 로컬 환경에서의 구동에서 사용하고 있다.
  • 스프링 시큐리티 - org.springframework.boot:spring-boot-starter-oauth2-client
    • 소셜 로그인 등 클라이언트 입장에서 소셜 기능 구현 시 필요한 의존성이다.
    • spring-security-ouath2-client와 spring-security-ouath2-jose를 기본으로 관리한다.

 

반응형

'개인 공부 > Spring-boot,Java' 카테고리의 다른 글

Spring web layer  (0) 2020.06.23
Entity 클래스  (0) 2020.06.22
lombok을 사용하는 이유  (0) 2020.06.22
lombok 설치  (0) 2020.06.21
Java Bean  (0) 2020.06.18

관련글 더보기

GitHub 댓글

댓글 영역