QueryDsl Configuration (Gradle, IDEA) - redutan/redutan.github.io GitHub Wiki

gradle

queryDsl.gradle

// queryDsl을 톡해 μžλ™μ„ μƒμ„±λ˜λŠ” QType의 μ €μž₯ 경둜
def queryDslOutput = hasProperty("querydslGeneratedDir") ? querydslGeneratedDir : "src/main/generated"
def queryDslOutputDir = file(queryDslOutput)
 
println displayName + " QueryDsl Generated Q-Type output dir : " + queryDslOutput
 
// queryDsl을 톡해 μžλ™μ„ μƒμ„±λ˜λŠ” QType의 μ €μž₯ 경둜λ₯Ό μ†ŒμŠ€λ””λ ‰ν† λ¦¬λ‘œ ν¬ν•¨μ‹œν‚¨λ‹€.
sourceSets {
    main {
        java {
            srcDirs += queryDslOutputDir
        }
    }
}
 
dependencies {
    compile 'com.querydsl:querydsl-apt'
}
 
// QType 생성 task
task generateQueryDSL(type: JavaCompile, group: 'build') {
    doFirst {
        if (!queryDslOutputDir.exists()) {
            logger.info("Creating `$queryDslOutputDir` directory")
 
            if (!queryDslOutputDir.mkdirs()) {
                throw new InvalidUserDataException("Unable to create `$queryDslOutputDir` directory")
            }
        }
    }
 
    source = sourceSets.main.java
    classpath = configurations.compile
    options.compilerArgs = [
        "-proc:only",
        "-processor",
        "com.querydsl.apt.jpa.JPAAnnotationProcessor"
    ]
    destinationDir = queryDslOutputDir
}
 
// 클린 μ‹œ queryDsl을 톡해 μžλ™μ„ μƒμ„±λ˜λŠ” QType의 μ €μž₯ κ²½λ‘œλ„ μ‚­μ œν•œλ‹€.
clean {
    //noinspection GroovyAssignabilityCheck
    delete queryDslOutputDir
}

build.gradle

apply from: "$rootProject.projectDir/queryDsl.gradle"
// ...
compileJava.dependsOn(generateQueryDSL)

maven

    <dependencies>
        ...
        <!-- persistence:querydsl -->
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources/java</outputDirectory>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

IntelliJ IDEA

Annotation Processors 에 μƒˆλ‘œμš΄ ν”„λ‘œν•„μ„ λ§Œλ“ λ‹€

  • QueryDsl

μƒˆλ‘œμš΄ ν”„λ‘œν•„μ— μ„€μ •

IDEA query configuration

  • Module content root λ₯Ό 선택
  • Annotation Processorλ₯Ό μ˜μ—­ ν•˜λ‹¨ +λ₯Ό 선택 ν•΄μ„œ 직접 λ“±λ‘ν•œλ‹€.
    • com.querydsl.apt.jpa.JPAAnnotationProcessor
    • lombok.launch.AnnotationProcessorHider$AnnotationProcessor
  • [확인]

μƒˆλ‘œμš΄ ν”„λ‘œν•„μ„ 적용

  • μ μš©ν•  λͺ¨λ“ˆμ„ 선택 ν›„ μ μš©ν•œλ‹€.
⚠️ **GitHub.com Fallback** ⚠️