web-dev-qa-db-fra.com

Problème du processeur d'annotation Querydsl après la mise à niveau vers Gradle 5

J'ai un script gradle qui génère des classes querydsl à partir d'entités annotées Mongo. Cela fonctionnait jusqu'à présent, mais après la mise à niveau vers Gradle 5, j'ai un problème avec:

* What went wrong:
Execution failed for task ':myproject-common:compileQuerydsl'.
Annotation processor 'org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor' not found

Veuillez trouver mon script gradle.build ci-dessous. Des idées qui pourraient être erronées? J'ai lu qu'il y avait un changement dans Gradle 5 que les processeurs d'annotation ne sont pas utilisés par défaut pendant la compilation et que la déclaration annotationProcessor devrait être ajoutée mais quand je l'ajoute aux dépendances, la même erreur se produit.

plugins {
    id 'org.springframework.boot' version '2.0.4.RELEASE'
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
repositories {
    mavenCentral()
}
apply plugin: 'Java'
apply plugin: 'io.spring.dependency-management'
jar {
    enabled = true
    baseName = 'myproject-common'
    version =  '0.0.1-SNAPSHOT'
}
// do no package commons into fat jar
bootJar {
    enabled = false
}
querydsl {
    library = 'com.querydsl:querydsl-apt:4.1.4'
    querydslSourcesDir = 'src/main/querydsl'
    springDataMongo = true
}
sourceCompatibility = 11.0
targetCompatibility = 11.0
sourceSets {
    main {
        Java {
            srcDirs = ['src/main/Java', 'src/main/querydsl']
        }
    }
}
dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.data:spring-data-mongodb")
    compile("org.springframework.boot:spring-boot-starter-data-rest")
    compile("org.springframework.boot:spring-boot-starter-security")
    compile("com.fasterxml.jackson.datatype:jackson-datatype-    jsr310:2.8.6")
    compile("com.google.guava:guava:23.0")
    compile("commons-io:commons-io:2.5")
    compile("org.aspectj:aspectjweaver:1.8.9")
    compile("org.Apache.commons:commons-lang3:3.5")
    compile("commons-collections:commons-collections:3.2.2")
    compile("org.javamoney:moneta:1.1")
    compile("com.fizzed:rocker-runtime:1.2.0")
    compile("com.querydsl:querydsl-core:4.1.4")
    compile("com.querydsl:querydsl-mongodb:4.1.4")
    compile("com.querydsl:querydsl-apt:4.1.4")
    compile("com.codepoetics:protonpack:1.15")

    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile("org.assertj:assertj-core:3.7.0")
}
5
Michal Plewka

Je pourrais résoudre le problème en ajoutant les deux dépendances suivantes.

annotationProcessor "com.querydsl:querydsl-apt:4.2.1:jpa"
annotationProcessor 'javax.annotation:javax.annotation-api:1.3.1'

La deuxième dépendance était une raison cachée pour laquelle cela ne fonctionnait pas pour moi.

0
Michael

Je vois que vous avez compile("com.querydsl:querydsl-apt:4.1.4") dans vos dépendances. Selon les docs

Les détails d'implémentation étant importants pour les processeurs d'annotation, ils doivent être déclarés séparément sur le chemin du processeur d'annotation. Gradle ignore les processeurs d'annotation sur le chemin de classe de compilation.

Alors, mettez com.querydsl:querydsl-apt:4.1.4 dans la portée annotationProcessor.

BTW, envisagez de passer à api/implementation étend sur compile.

0
madhead