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는 말 그대로 빌드를 위해 실행되는 스크립트다. Gradle 자체의 기능을 사용할 땐 필요 없으며,
외부 라이브러리 등을 사용할 경우 필요하다.
build.gradle에서 사용하는 전역변수를 설정하겠다는 의미다.
여기서는 springBootVersion 전역변수를 생성하고, 그 값을 '2.1.7.RELEASE'로 하겠다는 의미다.
즉, 'spring-boot-gradle-plugin' 이라는 스프링 부트 그레이들 플러그인의 '2.1.7.RELEASE'을 의존성으로 받겠단 의미다.
앞서 선언한 플러그인 의존성들을 적용할 것인지를 결정하는 코드다.
'io.spring.dependency-management' 플러그인은 스프링 부트의 의존성을 관리해 주는 플러그인이라 꼭 추가해야 한다.
위에서 선언한 4개의 플러그인들은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이니 항상 추가해야 한다.
각종 의존성들을 어떤 원격 저장소에서 받을지를 정한다.
기본적으로 mavenCentral을 많이 사용하지만, 최근엔 라이브러리 업로드 난이도 때문에 jcenter도 많이 사용한다.
이것은 번외에서 추가 설명하겠다.
dependencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳이다.
인텔리제이의 경우, 메이븐 저장소의 데이터를 인덱싱해서 관리하기 때문에, 커뮤니티 버전을 사용해도 의존성 자동완성이 가능하다. (ex: compile('org 까지 입력 후, [Ctrl + Space] 커맨드를 입력하면, 해당되는 라이브러리의 목록을 볼 수 있다.
mavenCentral은 이전부터 많이 사용된 저장소지만, 본인이 만든 라이브러리를 업로드 하기위해서는 정말 많은 과정이 필요하다. 그러다 보니 개발자들이 직접 만든 라이브러리를 업로드 하는 것이 힘들어 점점 공유가 안되는 상황이 발생했다.
jcenter는 위 mavenCentral의 문제점인 라이브러리 업로드를 간단하게 하였다.
또한, 여기서 더 나아가 jcenter에 라이브러리를 업로드 하면, mavenCentral에도 업로드 될 수 있도록 자동화를 할 수 있다. 이런 장점들로 현재 개발자들의 라이브러리가 점점 jcenter로 이동하고 있다.
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 |