1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
buildscript {
ext {
springBootVersion = '2.1.6.RELEASE'
}
repositories {
mavenCentral()
}
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'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')
runtime('org.springframework.boot:spring-boot-devtools')
compileOnly('org.projectlombok:lombok')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
|
cs |
(1) buildscript
1
2
3
4
5
6
7
8
9
10
11
|
buildscript {
ext {
springBootVersion = '2.1.7.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
|
cs |
- Gradle 빌드 스크립트 자체를 위한 의존성이나 변수, Task, Plugin 등을 지정할 수 있다. 서드파티 플러그인이나 Task, Class 등을 빌드 스크랩트 내에서 추가로 사용하려면 해당 의존성을 추하개줘야 한다. 중괄호로 묶은 내용을 ScriptHandler로 전달한다.
- springBootVersion 전역변수를 생성하고 그 값을 '2.1.7.RELEASE'로 하겠다는 의미이다. 즉, spring-boot-gradle-plugin라는 스프링 부트 그레이들 플러그인의 2.1.7.RELEASE를 의존성으로 받겠다는 의미이다.
(2) 의존성 적용 결정 코드
1
2
3
4
|
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
|
cs |
- 다음은 앞서 선언한 플러그인 의존성들을 적용할 것인지를 결정하는 코드이다.
- io.spring.dependency-management 플러그인은 스프링 부트의 의존성들을 관리해주는 플러그인이라 꼭 추가해야만 한다.
- 위의 4개의 플러그인은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인들이니 항상 추가하면 된다.
(3) 나머지 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')
runtime('org.springframework.boot:spring-boot-devtools')
compileOnly('org.projectlombok:lombok')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
|
cs |
- repositories는 각종 의존성(라이브러리)들을 어떤 원격 저장소에서 받을지를 정한다.
- depencies는 프로젝트 개발에 필요한 의존성들을 선언하는 곳이다.
- 의존성 코드의 경우 특정 버전을 명시하면 안된다. 버전을 명시하지 않아야만 맨 위에 작성한 'org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}'의 버전을 따라가게 된다.
- 이렇게 관리할 경우 각 라이브러리들의 버전 관리가 한 곳에 집중되고, 버전 충돌 문제도 해결되어 편하게 개발을 진행할 수 있다.
(1) compile : 먼저 compile 시점에 필요한 dependency 라이브러리들을 compile로 정의한다.
(2) runtime : 런타임 시에 참조할 라이브러리를 정의한다. 기본적으로 compile 라이브러리를 포함한다.
(3) compileOnly : 컴파일 시점에만 사용하고 런타임에는 필요없는 라이브러리를 정의한다.
(4) testCompile : 프로젝트의 테스트를 위한 dependency 라이브러리를 정의. 기본적으로 compile된 클래스와 compile 라이브러리를 포함한다.
(5) providedCompile : compile 시에는 필요하지만, 배포시에는 제외될 dependency 설정 (war plugin이 설정된 경우에만 사용 가능)
(6) providedRuntime : runtime시에만 필요하고, 실행환경에서 제공되는 dependency를 설정 (war plugin이 설정된 경우에만 사용 가능)
※ 참고 : https://waspro.tistory.com/504
댓글