IntelliJ에서 Spring Initializer로 간단하게 스프링부트 어플리케이션을 생성하면 아래와 같은 build.gradle 이 생성된다.
- 추가한 의존성
- lombok
- Spring Web
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'me.sjlee'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
1. plugins
- 명시된 플러그인들을 적용한다.
2. group
3. version
4. sourceCompaibility
5. configurations
6. repositories
- 의존 관계를 내려받기 위한 저장소를 지정한다.
- mavenCentral() : mavenCentral 저장소를 사용하겠다.
7. dependencies
- 명시된 의존성들이 위에 설정한 저장소(mavenCentral) 에서 내려받아 사용된다.
- 키워드
- gradle 3.0 부터 deprecated된 키워드 (사용하지 맙시다.)
- compile
- 프로덕션 코드를 컴파일하고 실행할 때 필요하다.
- testCompile
- 테스트 코드를 컴파일하고 실행할 때 필요하다.
- compile
- 3.0 이후 사용되는 키워드
- api
- implementation
- compileOnly
- 컴파일을 하는 과정에서는 필요하나, 빌드 결과물에는 포함시키지 않는 경우
- 만약 위에서 lombok을 컴파일하게 된다면, 빌드 결과물에도 lombok에 대한 정보들이 컴파일 될 것이다.
- 우리는 단지, getter, setter 등 lombok 어노테이션의 결과물을 원할 뿐이기 때문에 compileOnly를 사용했다.
- 컴파일을 하는 과정에서는 필요하나, 빌드 결과물에는 포함시키지 않는 경우
- testImplementation
- annotationProcessor?
- gradle 3.0 부터 deprecated된 키워드 (사용하지 맙시다.)
8. test
그레들 wrapper
- gradle/wrapper/gradle-wrapper.jar
- 그레들 래퍼의 부트스트랩
- 그레들을 다운로드 할 수 있는 코드를 가진 jar파일
- gradle/wrapper/gradle-wrapper.properties
- 그레들 래퍼의 설정파일
- 그레들 래퍼가 runtime에 사용하는 설정이 모아져 있음
- 그레들 래퍼의 설정파일
- gradle/gradlew
- 유닉스 환경 실행용 쉘 스크립트
- gradle/gradlew.bat
- 윈도우 용 스크립트
settings.gradle
- 빌드 대상을 설정하는 스크립트
- 현재 프로젝트는 gradle multi project가 아니므로
- rootProject.name 정도의 정보만 들어있다.
'Gradle basic' 카테고리의 다른 글
apply plugin: 'java' 란? (2) | 2020.11.25 |
---|