티스토리 뷰
Java/SpringBoot&Spring
[Gradle] Mybatis xml 파일, 타경로 빌드에 포함시키기 (feat.IntelliJ) : mapped statements collection does not contain value for 문제 해결
종벌🍀 2023. 8. 10. 13:59반응형
springboot JPA 프로젝트를 진행중인데,
그 중 일부 쿼리는 mybatis 를 써야해서 적용한 상태.
근데 특이점으로는 xml 파일이 java 소스 폴더(src/main/java)에 포함되어있는 구조.
이와 같은 구조인데,
이 구조가 이클립스 환경에서는 특이점 없이 잘 구동 되나,
인텔리제이 환경에서는 mybatis 쿼리 id를 찾지 못하는 에러에 빠지게 된다.
error : ... mapped statements collection does not contain value for {namespace.id} ...
원인은 gradle 빌드한 후 빌드 폴더를 열어보면
어디에도 mybatis 맵퍼 xml 이 존재하지 않는다.
원래 xml 파일은 정적 리소스 파일이라 src/main/resources폴더에 위치 시키는게 맞다.
근데 간혹 프로젝트 구성 상 위와 같이 src/main/java 소스 폴더에 있을 수도 있다.
그렇다고 그 많은 xml 파일을 일일이 resources 폴더에 이동시키는 것도 일이다.
(사실 이동시키면 문제가 해결 되긴 함.)
그래서 빌드시에 정적인 파일을 리소스 폴더에도 위치시키기 위해
build.gradle 파일에 빌드 sourceSets 조건을 추가하여 해결하였다.
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources{
srcDir "${project.projectDir}/src/main/java"
}
}
}
이렇게 하고 빌드하면 resources 폴더에 정적 리소스파일들이 재배치 되어진다.
인텔리제이에서 발생하던 mybatis 맵퍼 xml 을 못찾는 오류가 사라지는 것을 확인할 수 있다.
반응형
'Java > SpringBoot&Spring' 카테고리의 다른 글
[SpringBoot JPA] 다중 DB 설정하기 (multi Datasource + 이기종 DB) (1) | 2023.10.19 |
---|---|
[thymeleaf] #temporals 로 날짜 설정하기 (0) | 2023.10.05 |
[SpringBoot] JavaMailSender 메일 보내기. (0) | 2023.08.03 |
[SpringBoot] 파일다운로드 컨트롤러 (feat.a href) (0) | 2023.07.26 |
[Spring] AsyncRestTemplate 을 이용한 REST API Call. (0) | 2023.06.28 |
댓글