본문 바로가기
Java

Gradle) Q클래스 import 안됨 문제 (feat. gradle source sets)

by 하이방가루 2023. 4. 22.
728x90
반응형

queryDSL 라이브러리를 추가하고 Q클래스를 생성하여 쓰려고 하는데 IDE에서 자동완성 및 자동 import가 안 되었다.

Q클래스는 잘 생성되었으나 프로젝트에서 import가 안 되는 것이었다.

 

구글링 해보니 IntelliJ에서 File > Project Structure > Project Settings > Modules 에서 Q클래스가 생성된 폴더를 Excluded 되어있는 것을 Sources로 상태 변경하면 된다고 하였는데(Intellij에서 Querydsl 사용시 Q Class import 문제 (velog.io)),

나의 경우 이렇게 하여도 안되었다.

 

그러다 build clean을 하고 (나의 경우 Q클래스를 build폴더에 생성하였었다.) 다시 Q클래스를 생성하니 인식하였다.

뭐가 문제였을까?

 

문제의 원인을 찾기 위해 build.gradle을 분석하다가

sourceSets {
	main.java.srcDir querydslDir
}

queryDSL을 추가할 때 추가로 입력했던 이 부분이 이전 블로그에서 문제를 해결했던 것과 유사한 역할을 하는 것이 아닐까? 하고 생각하게 되었고 gradle sourceSet에 대해서 찾아보니 이 소스 세트가 소스 파일의 논리적 그룹을 나타내는 것임을 알 수 있었다.

https://recordsoflife.tistory.com/209

https://www.baeldung.com/gradle-source-sets

 

그러니 Q클래스가 import되지 않았던 이유는 논리적으로 같은 그룹임을 인지하지 못하여 발생한 문제였던 것이다.

 

추가적으로 gradle로 소스 세트를 확인하고 싶다면, build.gradle에

tasks.register('printSourceSetInformation') {
	doLast {
		sourceSets.each { srcSet ->
			println "[" + srcSet.name + "]"
			print "-->Source directories: " + srcSet.allJava.srcDirs + "\n"
			print "-->Output directories: " + srcSet.output.classesDirs.files + "\n"
			println ""
		}
	}
}

을 추가하고 gradle을 reload하면 

프로젝트명 > Tasks > other 에 기능이 추가된 것을 볼 수 있다.

이것을 실행하면

> Task :printSourceSetInformation
[main]
-->Source directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\src\main\java, C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\build\generated\querydsl]
-->Output directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\build\classes\java\main]

[querydsl]
-->Source directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\build\generated\querydsl]
-->Output directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\build\classes\java\querydsl]

[test]
-->Source directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\src\test\java]
-->Output directories: [C:\Users\사용자명\Desktop\Projects\springboot_and_jpa_learning\build\classes\java\test]

위와 같이 sourc sets를 확인할 수 있다.

728x90
반응형

'Java' 카테고리의 다른 글

Gradle) Unsupported class file major version 64 오류  (0) 2023.04.22
Windows에서 Java 버전 관리하기  (0) 2023.02.22

댓글