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")
}
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.
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
.