如何在(现代)gradle中生成QueryDSL mongoDB和lombok

问题描述 投票:0回答:2

让 QueryDSL 和 lombok 一起工作并不简单,特别是因为 querydsl 的 gradle 文档最多也缺乏。

我想避免使用仍然依赖于

compile
配置的自动插件,或者在破坏其他系统的额外任务中进行黑客攻击(例如 intellij idea 构建)。

完成所有不起作用的事情将花费我一段时间,所以我将这个问题和答案留给其他人(可能还有我未来的自己)。

gradle lombok querydsl
2个回答
0
投票

这是(到目前为止)正确考虑 queryDSL 和 lombok 的编译步骤的最简单方法。 spring-data-mongo 对注释处理器的启动要求可能有点过大,并且可以做得更好。

plugins {
    id 'java'
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
}

repositories {
    mavenCentral()
}

sourceCompatibility = '17'

ext{
    springBootVersion = "2.7.4"
}

dependencies {
    implementation(platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}"))
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation "org.springframework.boot:spring-boot-starter-test"
    testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
}

ext {
    queryDslVersion = "5.0.0"
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

dependencies {
    //required to use dependency management to find the right versions. Alternatively specify the version in the dependency directly
    annotationProcessor(platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}"))
    compileOnly "org.projectlombok:lombok"
    annotationProcessor "org.projectlombok:lombok"
    testCompileOnly "org.projectlombok:lombok"
    testAnnotationProcessor "org.projectlombok:lombok"

    //querydsl
    implementation("com.querydsl:querydsl-core:${queryDslVersion}")
    annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:general")
    //I'm lazily using the full starter here to automatically include other annotation dependencies like validation. You could specify them separately/specifically
    annotationProcessor('org.springframework.boot:spring-boot-starter-data-mongodb')
}

//adding both annotation processors directly on the compiler options make them work together nicely.
compileJava {
    options.compilerArgs += [
            "-processor", 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor,org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor'
    ]
}

0
投票

检查这个小https://github.com/rahimalizada/spring-data-mongodb-querydsl-processor,我专门启用了自动注释处理,以启用 QueryDSL 和 spring-data-mongo 的自动注释处理.

© www.soinside.com 2019 - 2024. All rights reserved.