티스토리 뷰

반응형

 

 

 

intellijideaSpring BootGradle

 

 

사내에 querydsl 설정을 아주 잘 하는 동료가 있다면 문제가 없겠지만,

저와 같이 홀로 분투하시는 분들을 위해 저도 지금까지 이 방법 저 방법 해오다가

깔끔하게 해결된 상태를 공유하고자 합니다.

 

저도 Q클래스 생성하는 법을 여러 설정법으로 올렸었고,

마주하던 여러 오류상황들을 조치했던 글을 서너개 포스팅 했는데...

지속적으로 불편한 상황들이 계속 발생 되었고, 주변 동료들에게도 빈번하게 발생하여

이 상황을 문제없게 해결하고자 QueryDSL 설정을 다시 건드려보게 되었습니다.

 

초반에는 설정에 대한 이해가 부족한 상태였던 것 같고 

지속적으로 이 부분을 마주하다 보니 깨달음이 온 것 같네요.

 

 

이번 포스트는 인텔리제이에서의 방법입니다.

 

 

 

 

 

 

 

 

 


이클립스나 STS 를 사용하시는 분들은 아래 포스트로 진행하시면 아무 문제가 없습니다.

 

이클립스(STS)에서의 QueryDSL 설정

 

[SpringBoot] QueryDSL Q클래스 생성하기 : 플러그인 방식(feat.STS)

JPA JPQL 을 사용하던 도중 QueryDSL 로 쿼리를 짜보고 싶어 셋팅해봄. SPRING DATA JPA 레퍼런스에 queryDSL이 언급은 되는데 설정하는 방법 같은 건 딱히 없어서 블로그들 참고하여 com.ewerk.gradle.plugins.queryd

jong-bae.tistory.com


 

 

 

 

 

 

 

 


설정을 다시 하게 된 시발점은 이전에 포스팅했던 Q클래스 import 가 안되는 현상 때문이었습니다.

 

[SpringBoot] QueryDSL Q클래스가 import 안될 때...(feat.IntelliJ)

querydsl로 테스트 할께 있어서 q클래스를 가져다가 사용하는데 import 가 안되는 현상 발생... 잘 됐던 repository 에서도 인식이 안되고 기존 import 된 라인들이 다 인식 안되길래 프로젝트 트리를 보니

jong-bae.tistory.com

 

 

 

인텔리제이를 재기동하면 generated 폴더가 계속 안잡혀 있어 매우 번거로웠습니다.

그래서 제가 이전에 올렸던 설정법들을 다시 보니 이유를 알 것 같았습니다.

팀원 중 일부가 이클립스를 쓰는 사람도 있어서 gradle 설정을 이클립스 쪽에 맞춰서 쓰고 있던 것이 문제였습니다.

 

인텔리제이 Gradle 빌드를 쓰면 알아서 build 폴더에 생성되고 모듈이 연결되는데

이클립스 방식을 쓰다보니 직접 지정한 generated 위치에 Q클래스가 생성되었고 

이것이 인텔리제이 프로젝트 모듈에 자동으로 연결되지 않아서 생기는 문제였습니다.

 

그래서 gradle 설정을 아래와 같이 조정했습니다.

 

 

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.7'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.sample'
version = '0.0.1'
sourceCompatibility = '1.8'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-security'
	implementation 'org.springframework.boot:spring-boot-starter-data-redis'
	implementation 'org.springframework.session:spring-session-data-redis'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-mail'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.0'
	implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.1'
	implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.2.0'
//	implementation 'org.projectlombok:lombok'
	implementation 'org.mapstruct:mapstruct:1.5.3.Final'
	implementation 'com.querydsl:querydsl-jpa:5.0.0'
//	implementation 'com.querydsl:querydsl-apt:5.0.0'

	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

	runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
	annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'

	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
	useJUnitPlatform()
}

sourceSets {
  main {
    java {
     srcDirs = ['src/main/java']
    }
    // Mybatis 쿼리 xml 위치때문에 조정
    resources{
     srcDir "${project.projectDir}/src/main/java"
    }
   }
}

jar {
    enabled = false
}


//clean {
//	delete file(generatedDir)
//}

// def generatedDir =  "src/main/generated"

 

 

 

 

이제 gradle 갱신 후에 빌드 하면 

build 폴더 안에 Q클래스가 생성되고 프로젝트 모듈이 알아서 잘 연결하게 된다.

(과거 포스팅 때 발생했던 Q클래스심볼오류, 빌드오류는 자연스레 해결되고 generated 폴더 연결 안되는 문제까지 모두 해결됐습니다. )

 

 

 

 

 

 

 

저는 빌드방식을 Gradle 로 사용합니다.

 

 

 

 

 

 

개발자 환경에 따라서 QueryDSL 설정방법이 천차 만별입니다. 솔직히...

제가 설정한 방법이 어떤 분에게는 안될 수도 있고 쫌 다르게 동작할 수도 있습니다.

 

저는 위와 같이 설정 함으로써 queryDSL 에서 발생하는 모든 문제가 해결되어 

더 이상의 골머리는 썩지 않을 것 같습니다.

 

 

 

 

 

 

 

 

 

 

 

 


Q클래스 annotation 방식으로 생성

 

[SpringBoot] QueryDSL Q클래스 생성하기 : annotationProcessor 방식 (feat.intelliJ)

지난번 STS (이클립스) 에서 QueryDSL을 설정했었다. [SpringBoot] QueryDSL Q클래스 생성하기 : 플러그인 방식 (feat.STS) [SpringBoot] QueryDSL Q클래스 생성하기(feat.STS) JPA JPQL 을 사용하던 도중 QueryDSL 로 쿼리를

jong-bae.tistory.com

Q클래스 빌드오류 해결

 

[SpringBoot] QueryDSL Q클래스 빌드오류 해결 (feat.intelliJ)

지난번 이클립스(STS)와 인텔리제이에서 QueryDSL Q클래스를 생성해서 잘 동작하는 것을 확인했었다. [SpringBoot] QueryDSL Q클래스 생성하기 : annotationProcessor 방식 (feat.intelliJ) [SpringBoot] QueryDSL Q클래스

jong-bae.tistory.com

 

 

 

 

 

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