IntelliJ 15 与 QueryDSL 和 Gradle

2024-01-11

我在 IntelliJ 15 中有一个使用 gradle 2.3 和 QueryDSL 4.1.3 的 Spring-boot 1.4 项目,该项目无法构建,因为我的实体没有被 Querydsl 构建到 Q 类中。我有以下内容:

 buildscript {
    ext {
        springBootVersion = '1.4.0.BUILD-SNAPSHOT'
        querydslVersion = '4.1.3'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
        maven {url "https://plugins.gradle.org/m2/"}
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.7"
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'groovy'
apply plugin: "com.ewerk.gradle.plugins.querydsl"

jar {
    baseName = 'billing'
    version = '0.0.1-SNAPSHOT'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
    maven { url "https://repo.spring.io/libs-snapshot" }
    maven { url "https://repo.spring.io/libs-snapshot"}
    maven {url "https://plugins.gradle.org/m2/"}

}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile "com.querydsl:querydsl-root:$querydslVersion"
    compile "com.querydsl:querydsl-jpa:$querydslVersion"
    compile "com.querydsl:querydsl-apt:$querydslVersion:jpa"

    compile 'org.codehaus.groovy:groovy-all:2.4.1'
    compile fileTree(dir: "libs/qbo-sdk-2.5.0", include: "*.jar")

    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.spockframework:spock-core:1.0-groovy-2.4') {
        exclude group: 'org.codehaus.groovy', module: 'groovy-all'
    }

    testCompile('org.spockframework:spock-spring:1.0-groovy-2.4') {
        exclude group: 'org.spockframework', module: 'spock-core'
    }
    testCompile("junit:junit")

}

sourceSets {
    main {
        output.resourcesDir = output.classesDir
    }
    generated {
        java {
            srcDirs = ['src/main/generated']
        }
    }
}

querydsl {
    library = 'com.mysema.querydsl:querydsl-apt'
    querydslDefault = true
}


test {
    reports.junitXml.destination = file('build/test-results/folder')
}

jacoco {
    toolVersion = "0.7.0.201403182114"
}

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
}

configurations {
    querydslapt
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

idea {
    module {
        sourceDirs += file('generated/')
        generatedSourceDirs += file('generated/')
    }
}

当我运行单元测试时,出现错误:

Caused by: java.lang.ClassNotFoundException: com.company.billing.customer.QCustomer

当我运行“gradle clean build”时,我得到: 找不到 com.mysema.querydsl:querydsl-apt:。

在以下位置进行了搜索:https://repo1.maven.org/maven2/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo1.maven.org/maven2/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo1.maven.org/maven2/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo1.maven.org/maven2/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://jcenter.bintray.com/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://jcenter.bintray.com/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://jcenter.bintray.com/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://jcenter.bintray.com/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/milestone/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/milestone/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/milestone/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/milestone/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/libs-snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/libs-snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.pom https://repo.spring.io/libs-snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar https://repo.spring.io/libs-snapshot/com/mysema/querydsl/querydsl-apt//querydsl-apt-.jar

我意识到 QueryDsl 在 3 和 4 之间进行了一些包重构,但看起来我的依赖项无法找到,即使它们显然在这里:https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa/4.1.3 https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa/4.1.3

至少,这是我目前关于构建失败原因的理论。有没有人获得最新的 spring、gradle 和 querydsl 来工作?

Update: 我删除了 ewerk 插件并简化了我的 build.gradle 文件,因此现在一切都可以正常构建。我正在更新以帮助其他可能需要此信息的人:

buildscript {
    ext {
        springBootVersion = '1.4.0.BUILD-SNAPSHOT'
        querydslVersion = '4.1.3'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'groovy'

jar {
    baseName = 'billing'
    version = '0.0.1-SNAPSHOT'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
    maven { url "https://repo.spring.io/libs-snapshot" }
    maven { url "https://repo.spring.io/libs-snapshot"}
    maven {url "https://plugins.gradle.org/m2/"}
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-security')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile "com.querydsl:querydsl-root:$querydslVersion"
    compile "com.querydsl:querydsl-jpa:$querydslVersion"
    compile "com.querydsl:querydsl-apt:$querydslVersion:jpa"

    compile 'org.codehaus.groovy:groovy-all:2.4.1'
    compile fileTree(dir: "libs/qbo-sdk-2.5.0", include: "*.jar")

    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('org.spockframework:spock-core:1.0-groovy-2.4') {
        exclude group: 'org.codehaus.groovy', module: 'groovy-all'
    }

    testCompile('org.spockframework:spock-spring:1.0-groovy-2.4') {
        exclude group: 'org.spockframework', module: 'spock-core'
    }
    testCompile("junit:junit")
}

test {
    reports.junitXml.destination = file('build/test-results/folder')
}

jacoco {
    toolVersion = "0.7.0.201403182114"
}

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

idea {
    module {
        sourceDirs += file('generated/')
        generatedSourceDirs += file('generated/')
    }
}

您是否看到 Gradle 输出中生成了 QClass?从您的错误来看,它似乎已经超过了应该生成它们的点。

我认为问题是你没有配置JPAAnnotationProcessor。这是为了方便在 gradle 中通过将 :jpa 附加到您的 querydsl-apt 依赖项来完成的。在 Maven 中,您应用插件manually http://www.baeldung.com/rest-api-search-language-spring-data-querydsl.

我的 build.gradle 中有以下与 querydsl 相关的内容。

idea {
    module {
        sourceDirs += file('generated/')
        generatedSourceDirs += file('generated/')
    }
}
[...]
compile "com.querydsl:querydsl-root:$querydslVersion"
compile "com.querydsl:querydsl-jpa:$querydslVersion"
compile "com.querydsl:querydsl-apt:$querydslVersion:jpa

idea 块只是自动配置 IDEA 中生成的源目录,以便 IDE 中的构建正常工作。

EDIT:

The JPAAnnotationProcessor输出如下所示。

Note: Running JPAAnnotationProcessor
Note: Serializing Supertypes
Note: Generating com.myclass.example.QMappedSuperClass for [com.myclass.example.MappedSuperClass]
Note: Serializing Entity types
Note: Generating com.myclass.example.QMyClass for [com.myclass.example.MyClass]

EDIT:

我对 ewerk 插件不熟悉,所以我看了看。它似乎正在尝试为您激活 JPAAnnotationProcessor。您可能需要根据文档设置 JPA 标志here https://github.com/ewerk/gradle-plugins/tree/master/querydsl-plugin因为它默认为 false。

请参阅有关依赖性问题的评论线程。 编辑:对于摇篮 4.6+ https://docs.gradle.org/4.6/release-notes.html#convenient-declaration-of-annotation-processor-dependencies,您可以使用annotationProcessor syntax.

api "com.querydsl:querydsl-root:$querydslVersion"
api "com.querydsl:querydsl-jpa:$querydslVersion"
annotationProcessor "com.querydsl:querydsl-apt:$querydslVersion:jpa"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IntelliJ 15 与 QueryDSL 和 Gradle 的相关文章

随机推荐

  • 箭头的创意运用

    我刚刚读了帖子单子的创造性用途 https stackoverflow com questions 412929 creative uses of monads 其中充满了非常有趣的想法和参考 所以我很好奇 箭头怎么样 我并不是在寻找有关基
  • 使用 Java2d 平滑绘图而不使用 Opengl 或 Direct3d Pipelines?

    当 opengl 和 direct3d 管道被禁用时 我无法找到一种方法来使用 Java2d 获得任何东西的平滑移动或动画 通过使用 Dsun java2d d3d false 和 Dsun java2d opengl false 调用虚拟
  • JavaFX 2.2:设置表格单元格样式并处理行伪类(悬停、选定等)

    我正在开发一个 JavaFX 应用程序 其中包含一个带有特殊单元格的 TableView 这样当单元格中的数据无效时 单元格就会变成红色 这对于 css 来说很容易 但是我在覆盖 TableCell 的所有伪类时遇到了麻烦 import j
  • 在intellij上发起一场战争

    我有一个 Java EE 项目 已导入 IntelliJ 中 我可以编译该项目 但由于某种原因无法构建战争工件 当我转到build选项卡
  • Delphi 7 中的圆形标题为“TPanel”

    我的应用程序中有一个 TPanel 但外观不同 对于它 我想要一个彩色标题栏和圆角的上角 就像在某些用户界面中一样it http demo bricolagecms org login welcome html referer login
  • 如何使用外部 JavaScript 代码访问和更新 Bokeh 图或小部件?

    我有一个由时间散景滑块控制的散景图 我试图通过单击按钮将滑块的时间和相应的绘制数据设置为浏览器的当前时间 如果一切都完全用 JS 开发 我知道如何做同样的事情 但我正在编写嵌入 HTML 文件中的外部 JS 函数 并且我不知道如何访问 Bo
  • Spring MVC 测试(安全集成测试),JSESSIONID 不存在

    我为我的 Spring Boot 应用程序创建了自定义登录表单 在我的表单集成测试中 我想检查收到的 cookie 是否包含JS会话ID and XSRF 令牌 但是 我只收到了XSRF 令牌 这是我的测试 RunWith SpringJU
  • python/numpy 中的线性组合

    问候 我不确定这是否是一个愚蠢的问题 假设我有 3 个 numpy 数组 A1 A2 A3 和 3 个浮点数 c1 c2 c3 我想评估 B A1 c1 A2 c2 A3 c3 numpy 会计算这个 例如 E1 A1 c1 E2 A2 c
  • 如何更改滚动条拇指的高度?

    有没有办法将滚动条的高度更改为固定高度并相应地更改滚动的内容量 这是我当前的CSS代码 webkit scrollbar width 30px Track webkit scrollbar track box shadow inset 0
  • 在 AES-CTR 模式下正确使用随机数和计数器

    据我了解 在 AES 计数器模式下 我需要使用 128 位随机数 最简单的方法是使用随机 128 位随机数 但我不确定如果将其作为所有随机位传递 算法是否能够正确增加计数器 我认为正确的方法是使用 96 位随机数和从 0 开始的 32 位计
  • 为什么我们使用方括号而不是定义它的括号来调用 vec 宏?

    我正在学习 Rust 宏 并且在使用时对语法感到困惑vec The 源代码 https github com rust lang rust blob 1 35 0 src liballoc macros rs L38 L46实施vec ma
  • 我的 javascript web 工作人员在随机的地方默默地死去。我该如何调试这个?

    网络工作者只是停止 没有错误或任何东西 代码是完全确定性的 但它会在代码的不同点处终止 编辑 问题是我没有维护对我的工人的引用 因此他们在被垃圾收集时似乎随机死亡 问题是我没有维护对我的工人的引用 因此他们在被垃圾收集时似乎随机死亡
  • Pybrain交叉验证方法

    我尝试对我的数据使用交叉验证器 但成功率是 0 0 这没有意义 我的数据由具有 5 个连续属性和两个可能的类别的样本组成 y 和 n My code net pybrain tools shortcuts buildNetwork 5 8
  • 从 Postman 中的对象数组中提取值

    我想从 Postman 中的对象数组中提取 Id 值 然后将其设置为环境变量 如果 JSON 响应是一个对象 则以下脚本可以工作 但不适用于对象数组 我的数组只有一个对象 var data JSON parse responseBody p
  • 有没有办法以编程方式读取 Java 中的 .jmod 文件?

    我用 7 zip 打开了一个 jmod 文件 我可以看到内容 我尝试用 ZipInputStream 以编程方式读取它 但它不起作用 有人知道怎么做吗 中没有文档JEP 261 模块系统 https openjdk java net jep
  • QListView 中的 QT4 QstringListModel

    这是我的第一个 QT 问题 我通常是一名 C 程序员 所以请原谅我问了一个愚蠢的问题 我确信有一个非常简单的答案 但我似乎找不到 我想将项目添加到列表中 目前我们假设它们是字符串 我有一个 QListView UI gt listView
  • volley 库中出现 OutOFMemory 错误

    这就是我正在做的 首先进入自定义适配器的构造函数 我初始化了图像缓存和图像加载器 imageCache new BitmapLruCache mImageLoader new ImageLoader newRequestQueue cont
  • KnockoutJS 使用映射插件订阅属性更改

    无论如何 我可以告诉淘汰映射插件订阅所有属性更改调用某个函数吗 我意识到我可以通过这种方式手动订阅属性更改事件 var viewModel name ko observable foo subscribe manually here vie
  • Spring Security 引起:org.springframework.security.config.annotation.AlreadyBuiltException:该对象已被构建

    在我的 Spring Boot 应用程序中 当我在注入 UserDetailService 实现类的服务层类上添加 PreAuthorize hasAuthority ADMIN 时 出现错误 此对象已构建 如果我应用方法安全性 在任何其他
  • IntelliJ 15 与 QueryDSL 和 Gradle

    我在 IntelliJ 15 中有一个使用 gradle 2 3 和 QueryDSL 4 1 3 的 Spring boot 1 4 项目 该项目无法构建 因为我的实体没有被 Querydsl 构建到 Q 类中 我有以下内容 builds