Gradle 编译 QuerydslJava 失败
Gradle compile QuerydslJava failed
我正在使用 gradle、springBoot、querydsl 和 mongodb。
添加下一个 gradle 设置遵循 this article:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.9"
}
}
apply plugin: 'com.ewerk.gradle.plugins.querydsl'
sourceSets {
main {
java {
srcDir "$buildDir/generated/source/app/main"
}
}
}
dependencies {
compile "com.querydsl:querydsl-mongodb:4.1.4"
compileOnly "com.querydsl:querydsl-apt:4.1.4"
}
querydsl {
springDataMongo = true
querydslSourcesDir = "$buildDir/generated/source/app/main"
}
当我使用 gradle bootRun
启动项目时它工作正常,但是当我只使用 gradle clean build
时它在编译 querydsl 时失败。
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileQuerydslJava'.
> Compilation failed with exit code 1; see the compiler error output for details.
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:76: error: cannot find symbol
public QNotification(Path<? extends Notification> path) {
^
symbol: class Path
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:76: error: cannot find symbol
public QNotification(Path<? extends Notification> path) {
^
symbol: class Notification
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:80: error: cannot find symbol
public QNotification(PathMetadata metadata) {
^
symbol: class PathMetadata
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:5: error: package com.querydsl.core.types.dsl does not exist
import com.querydsl.core.types.dsl.*;
^
为什么它在构建过程中失败而在 bootRun 之后工作正常?
问题出在 pmd 插件中。
我已经从我的构建中排除了 compileQuerydslJava
任务 ./gradlew clean build -x compileQuerydslJava
并且遇到了下一个错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:pmdQuerydsl'.
> 46 PMD rule violations were found. See the report at: file:///Volumes/DATA/notification-service/app/build/reports/pmd/querydsl.html
所以我为 pmd 插件指定了源集
pmd {
sourceSets = [sourceSets.main]
}
现在一切正常。
我正在使用 gradle、springBoot、querydsl 和 mongodb。 添加下一个 gradle 设置遵循 this article:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.9"
}
}
apply plugin: 'com.ewerk.gradle.plugins.querydsl'
sourceSets {
main {
java {
srcDir "$buildDir/generated/source/app/main"
}
}
}
dependencies {
compile "com.querydsl:querydsl-mongodb:4.1.4"
compileOnly "com.querydsl:querydsl-apt:4.1.4"
}
querydsl {
springDataMongo = true
querydslSourcesDir = "$buildDir/generated/source/app/main"
}
当我使用 gradle bootRun
启动项目时它工作正常,但是当我只使用 gradle clean build
时它在编译 querydsl 时失败。
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileQuerydslJava'.
> Compilation failed with exit code 1; see the compiler error output for details.
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:76: error: cannot find symbol
public QNotification(Path<? extends Notification> path) {
^
symbol: class Path
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:76: error: cannot find symbol
public QNotification(Path<? extends Notification> path) {
^
symbol: class Notification
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:80: error: cannot find symbol
public QNotification(PathMetadata metadata) {
^
symbol: class PathMetadata
location: class QNotification
/Volumes/DATA/notification-service/app/build/generated/source/app/main/net/platform/notification/domain/impl/entity/QNotification.java:5: error: package com.querydsl.core.types.dsl does not exist
import com.querydsl.core.types.dsl.*;
^
为什么它在构建过程中失败而在 bootRun 之后工作正常?
问题出在 pmd 插件中。
我已经从我的构建中排除了 compileQuerydslJava
任务 ./gradlew clean build -x compileQuerydslJava
并且遇到了下一个错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:pmdQuerydsl'.
> 46 PMD rule violations were found. See the report at: file:///Volumes/DATA/notification-service/app/build/reports/pmd/querydsl.html
所以我为 pmd 插件指定了源集
pmd {
sourceSets = [sourceSets.main]
}
现在一切正常。