Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오블완
- python
- Spring Batch
- 깡돼후
- 티스토리챌린지
- kotlin
- Value too long for column
- taint
- VARCHAR (1)
- PytestPluginManager
- pytest
- terminal
- 코루틴 컨텍스트
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 개성국밥
- table not found
- 자원부족
- PersistenceContext
- preemption #
- vfr video
- tolerated
- mp4fpsmod
- JanusWebRTC
- JanusGateway
- 달인막창
- 겨울 부산
- addhooks
- JanusWebRTCGateway
- JanusWebRTCServer
- 코루틴 빌더
Archives
너와 나의 스토리
[Gradle] Multi Project 설정하기 (build.gradle 분리하기) 본문
반응형
1. settings.gradle에 최상위 프로젝트와 하위 프로젝트 설정
- rootProject.name = '프로젝트 이름'
- include = '하위 프로젝트', '하위 프로젝트', ...
2. 최상위 프로젝트의 build.gradle에 모든 서브 프로젝트에 공통된 설정을 넣는다.
- dependency-management를 통한 의존성 관리
- 아래의 코드처럼 dependency-management를 적용시키면 Spring Boot Gradle Plugin이 Spring Boot 버전에 따라서 의존성을 자동으로 관리해준다.
dependencyManagement {
dependencies {
dependencySet(group: 'org.springframework.boot', version: spring_boot_version) {
entry 'spring-boot'
entry 'spring-boot-test'
...
}
dependencySet(group: 'io.springfox', version: swagger_version) {
entry 'springfox-swagger-ui'
entry 'springfox-swagger2'
}
...
}
}
3. dependency 설정
- 아래 코드처럼 버전을 적지 않고 dependency를 작성해 놓아도, dependency-management 플러그인이 현재 사용하는 스프링 부트 버전에 해당하는 버전들을 자동으로 가져와 적용한다.
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation(
'javax.persistence:javax.persistence-api',
'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-thymeleaf',
'io.springfox:springfox-swagger2',
'io.springfox:springfox-swagger-ui'
)
...
}
<전체 코드 예시>
buildscript {
ext {
spring_boot_version = '2.4.3'
h2_version = '1.4.200'
...
}
repositories {
mavenCentral()
...
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${spring_boot_version}")
...
}
}
// default config
allprojects {
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
jar {
archiveBaseName.set("${rootProject.name}-${project.name}")
}
task sourceJar(type: Jar) {
from sourceSets.main.allSource
archiveBaseName.set("${rootProject.name}-${project.name}")
}
group = 'com.***.***'
version = '0.0.1'
sourceCompatibility = 1.8
repositories {
mavenCentral()
...
}
}
subprojects {
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
dependencies {
dependencySet(group: 'org.springframework.boot', version: spring_boot_version) {
entry 'spring-boot'
entry 'spring-boot-test'
...
}
dependencySet(group: 'io.springfox', version: swagger_version) {
entry 'springfox-swagger-ui'
entry 'springfox-swagger2'
}
...
}
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation(
'javax.persistence:javax.persistence-api',
'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-thymeleaf',
'io.springfox:springfox-swagger2',
'io.springfox:springfox-swagger-ui'
)
...
}
}
configurations.all {
resolutionStrategy {
// don't cache changing modules at all
cacheChangingModulesFor 0, 'seconds'
}
}
}
- subprojects: settings.gradle에 include된 프로젝트 전부를 관리
- dependenceManagement에서 작성된 entry에 적합한 버전을 주입해줌(스프링 버전은 입력되어 있으니 거기에 맞게)
- 하단의 dependencies에는 "version"을 지정하지 않고 사용할 의존성들을 선언함.
- 위의 dependencyManagement에 선언함으로써 버전 설정 자동으로 됨
4. 서브 프로젝트에 build.gradle 설정
- 해당 프로젝트(서브 프로젝트)에서 사용하는 의존성만 설정해주면 된다.
dependencies {
runtimeOnly(
'org.springframework.boot:spring-boot-starter-web',
'com.h2database:h2'
)
...
}
* 참고 자료:
The usage of classifiers in the dependencyManagement plugin is not supported since Gradle does not provide an API for the plugin to access the classifier. Therefore, dependency versions with classifiers cannot be specified in the dependencyManagement section either directly using dependency or as a group using dependencySet.
참고:
- docs.gradle.org/current/userguide/declaring_dependencies.html
- docs.spring.io/dependency-management-plugin/docs/current/reference/html/
반응형
'개발 > Spring Boot' 카테고리의 다른 글
[SpringBoot] health check API(서버 상태 확인 api) 설정 방법 (1) | 2021.07.16 |
---|---|
[Spring] Task 'wrapper' not found in project ':project' 문제 해결 (0) | 2021.04.05 |
[Spring] Thymeleaf 적용해보기 - Step 2. HTML-controller 데이터 전송 (0) | 2021.03.16 |
[Spring] Thymeleaf 적용해보기 - Step 1. 네비게이션 바, 입력 파라미터 설정 (2) | 2021.03.15 |
[Spring/java] junit 5에서 static method mocking하기 (0) | 2021.03.14 |
Comments