본문 바로가기
개발/Mybatis

[Maven] src/main/java xml 파일 인식 이슈 해결

by Neya31 2025. 1. 14.
728x90
반응형

https://velog.io/@dkatlf900/intellijresourcesissue

 

Intellij src/main/java Maven빌드 인식 이슈 해결

Intellij IDE에서는 별도의 설정 없이는 리소스 파일을 src/main/resources 에서만 인식한다.

velog.io

 

1.Intellij, Spring Boot, Maven빌드, Mybatis xml맵핑 불가 이슈 발생

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

해당 이슈를 검색하면 mybatis의 xml에서 namespace등 이름이나 경로, 공백이 추가되어 장애가 발생한 경우로 소개되어서 해결하는데 많은시간 소요되었다.

이번 경우는 Intellij IDE에서 리소스 파일(xml, properties, yml..등)은 resources 폴더 내에서만 인식을 하는 정책으로 발생한 이슈이다. STS IDE는 이슈없음

예제 사진에서 보이는 프로젝트 구조에서는 src/main/java안에 ***Mapper.java, ***Mapper.xml를 같이 담아져 있다.
즉, .xml  src/main/resources 가 아닌 src/main/java에 있기에 mybatis에서 xml파일 인식을 못하는 이슈이다.



2.해결방법

Maven빌드시 src/main/java 경로에 존재하는 모든 하위 .xml 파일도 빌드에 포함시키도록 Maven의 pom.xml에 설정을 추가해야 한다. xml이 아니라도 아래처럼 응용하면 된다.

  • pom.xml <build> 안에 설정을 넣어주면 된다.
<build>
		<resources>
			<resource>
				<!-- src/main/java 폴더의 xml파일들을 빌드에 포함 -->
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<!-- src/main/resources 폴더의 xml, properties, yml, setting파일들을 빌드에 포함 -->
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.properties</include>
					<include>**/*.yml</include>
					<!-- <include>**/*.setting</include>-->
				</includes>
			</resource>
		</resources>
</build>


pom.xml 설정 후 Maven빌드를 재실행.
Maven clean --> Spring Boot application OR Maven compile

  • 1. Maven clean 실행시 Maven 빌드로 생성되어진 target 폴더가 삭제 된다.


  • 2. 프로젝트마다 존재하는 Java Application Run실행시 target폴더 생성
    또는 Maven compile실행 해도 target폴더 생성이 된다.


  • 3. target폴더 내에 .xml 이 빌드 되었는지 확인하며 문제가 있을시 1~3번까지 과정을 다시 해보면서 target에 빌드포함 되는지 확인해야 한다. 처음 해당 이슈를 해결하는 과정에서 .xml이 빌드에 포함 안될때도 있었다.




Mybatis plugin 추천(intellij)

MybatisX : **Mapper.java 에서 연결되어지는 **Mapper.xml 로 쉽게 이동이 된다.

반응형

'개발 > Mybatis' 카테고리의 다른 글

[Log4jdbc] SQL 쿼리 로그 출력  (0) 2025.01.14
Spring + Mybatis + Gradle  (0) 2025.01.14