Hello, Freakin world!

간단한 QueryDSL 초기 설정 in Gradle 6 본문

JPA

간단한 QueryDSL 초기 설정 in Gradle 6

johnna_endure 2021. 3. 2. 16:43

 

buildscript {
    ext {
        queryDslVersion = "4.4.0"
    }
}

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

group = 'springboot.jpa'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'


    // QueryDSL
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    annotationProcessor(
            "javax.persistence:javax.persistence-api",
            "javax.annotation:javax.annotation-api",
            "com.querydsl:querydsl-apt:${queryDslVersion}:jpa")
}

sourceSets {
    main {
        java {
            srcDirs = ["$projectDir/src/main/java", "$projectDir/build/generated"]
        }
    }
}
test {
    useJUnitPlatform()
}

 

그레이들에서 지원하는 annotationProcessor 를 이용하면 간단하게 초기 설정을 마칠 수 있습니다.

 

주의할 사항은 querydsl-apt api가 @Entity, @Id등의 애너테이션을 알 수 있도록 javax.persistence-api, javax.annotation-api들도 추가한 점입니다.

 

그리고 개발 환경에서 생성된 Q파일들을 사용할 수 있도록 generated 디렉토리를 sourceSet에 추가해주면 개발 코드에서 생성된 Q파일에 접근할 수 있습니다.

 

참고로 Q파일은 그레이들의 compileJava 태스크가 수행되면 생성됩니다.

 

인텔리제이에서 애플리케이션을 시동할 때 Gradle이 아니라 IntelliJ로 돼있는 경우에는 그레이들의 application 태스크의 bootrun을 실행해야 실행됩니다. 이 옵션값을 확인하려면 Setting -> Gradle -> Build and run using 옵션을 확인해보세요.

이 옵션값이 Gradle이라면 그냥 실행해도 OK.

'JPA' 카테고리의 다른 글

M:N 매핑의 중간 테이블. 어떤 패키지에 있어야 될까?  (2) 2022.06.05
Comments