-
Yaml 을 Private Submodule 로 추가하여 관리하기Back-End/Database & etc 2023. 6. 8. 01:18
1. Yaml 파일 property 값들이 빈으로 등록되지 않는 문제 발생
build.gradle
// 메인 프로젝트와 경로를 맞춰줘야 런타임 시에 정상적으로 주입이 된다 sourceSets { main { resources { srcDirs = ['src/main/resources', 'buddy-wisdom-private/src/main/resources'] } } }
올바른 classpath 설정 필요.
application.yml 파일은 Runtime 시에 빈으로 주입되어야하기 때문에 메인 프로젝트와 경로를 맞춰줘야한다. 서브모듈 하위에 application.yml 의 위치를 기존 메인 프로젝트 Yaml 파일과 맞춰준다.
그리고 메인 프로젝트의 Yaml 은 반드시 지울 것!!
그렇지 않으면 중복 에러가 발생한다.
2. Gradle 설정 + Yaml 을 파싱할 dependency 주입
build.gradle
// gradle 에서 yml 을 읽어오기 위한 설정 tasks.register('readYaml') { doLast { File file = new File("buddy-wisdom-private/src/main/resources/application.yml") ObjectMapper mapper = new ObjectMapper(new YAMLFactory()) def config = mapper.readValue(file, Map.class) println config } }
dependencies { ... // Jackson yaml implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.0' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.0' ... }
// gradle 에서 yml 을 읽어오기 위한 설정 import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory // Compiletime 이 아닌 Runtime 시에 동작하므로 buildscript 에 의존성 추가 // Gradle 초기 설정 단계에서 클래스 경로가 설정되어야 하므로 buildscript 블록은 스크립트 파일의 상단에 위치 buildscript { dependencies { classpath 'com.fasterxml.jackson.core:jackson-databind:2.15.0' classpath 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.0' } } plugins { ... }
SnakeYaml 대신 JacksonYaml 을 사용하는 이유는 보안상의 이슈 때문이다.
SnakeYaml 는 보안 취약점이 발견된 이후 업데이트가 없으나 JacksonYaml 는 그 이후로도 계속 업데이트가 되고 있다. 버전은 2.15 이상을 권장.
3. Submodule 추가
.gitmodules
[submodule "buddy-wisdom-private"] path = buddy-wisdom-private url = https://github.com/f-lab-edu/buddy-wisdom-private.git
해당 파일은 git submodule add [private-repo] 를 추가하고 나면 생성된다.
4. Submodule 업데이트
git submodule update --remote
5. 주의할 점
- 서브 모듈 수정 후, 반드시 해당 디렉토리를 메인 프로젝트에서 commit 해주어야 변경된 내용으로 반영된다.
- 혹시라도 Yaml 에 추가해준 데이터베이스에서 서버 IP가 허용되어 있지 않은지 꼭 확인해보자.
'Back-End > Database & etc' 카테고리의 다른 글
DTO, VO, Entity (0) 2022.09.09 H2 Server 설치, Error 해결 (0) 2022.09.05