티스토리 뷰

반응형

 

 

 

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 을 못찾는 오류가 사라지는 것을 확인할 수 있다.

 

 

 

반응형
댓글
반응형
최근에 올라온 글
«   2025/01   »
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
Total
Today
Yesterday