본문 바로가기
CS

Gradle

by 원만사 2020. 8. 22.
반응형
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

 

반응형

'CS' 카테고리의 다른 글

PCB  (0) 2020.08.29
Process / Thread  (0) 2020.08.28
REST  (1) 2020.08.22
스프링 부트  (0) 2020.08.22
SOLID 원칙  (1) 2020.08.14

댓글