QueryDSL 与注释处理器的 Gradle 配置

2024-02-26

我搜索了很多关于配置的信息QueryDSL with Gradle。 我想配置注释处理器,以使用特定的注释@Generated在生成的类上。

  • 但我只能在这里找到这个链接:Gradle:无法生成 QueryDSL 类 https://stackoverflow.com/questions/62320937/gradle-unable-to-generate-querydsl-classes/69856961#69856961。这帮助我了解了一些细节。
  • 官方文档显示了可用的选项:https://querydsl.com/static/querydsl/latest/reference/html/ch03s03.html https://querydsl.com/static/querydsl/latest/reference/html/ch03s03.html(3.3.2.定制)。

这是我的build.gradle(续):

plugins {
    id 'java'
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.6'
    annotationProcessor 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.6'
    implementation 'com.querydsl:querydsl-jpa:5.0.0'
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
}

compileJava {
    finalizedBy 'generateQueryDSL'
}

task generateQueryDSL(type: JavaCompile) {
    source = sourceSets.main.java.srcDirs
    classpath = sourceSets.main.compileClasspath
    getDestinationDirectory().set(file("$buildDir/generated/sources/annotationProcessor/java/main"))
    options.annotationProcessorPath = configurations.annotationProcessor
    options.compilerArgs = [
        '-proc:only',
        '-processor',
        'com.querydsl.apt.jpa.JPAAnnotationProcessor',
        '-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
    ]
}

有没有更简单的方法来配置注释处理器?我在使用这种方法时遇到了很多麻烦,因为原始方法不断更改带有 OLD 注释的文件,因为我无法替换这种旧行为。这样,有些任务(或“compileJava”任务中的步骤)我无法删除或覆盖。


如果您只想配置 QueryDSL 处理器,而不专门将注释处理与编译分开,那么您所要做的就是传递-Aquerydsl.generatedAnnotationClass=…编译器参数compileJava班级。不需要单独的任务。

compileJava {
    options.compilerArgs << '-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
}

您问题中的设置问题:

  • -proc:only禁用编译,仅处理注释并生成代码(在options.generatedSourceOutputDirectory)
  • -processor仅列出 QueryDSL 处理器将禁用处理器路径中的所有其他注释处理器
  • 该任务配置为finalizedBy of the compileJava, so compileJava将编译您的代码,应用所有注释处理器,而无需您想要传递给 QueryDSL 处理器的特定配置,并且只有那时使用特定选项重新运行 QueryDSL 处理器但不进行编译,因此它将生成具有正确配置的源代码(例如在 IDE 中使用),但不会对其进行编译,因此编译后的类仍将具有“错误” " 从未配置的配置compileJava task
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QueryDSL 与注释处理器的 Gradle 配置 的相关文章

随机推荐

  • T-SQL 美元符号表达式

    In 这个答案 https stackoverflow com a 7213596 3345644 有一个技巧可以使用ROW NUMBER 窗口函数中带有 常量 ORDER BY clause SELECT ROW NUMBER OVER
  • 为什么将数据导出到 .xlsx 比导出到 .xls 或 .csv 慢得多?

    我有一个要导出到 Excel 的数据框 人们希望它是 xlsx 格式 我用to excel 但是当我将扩展名从 xls 更改为 xlsx 时 导出步骤大约需要 9 秒 而不是 1 秒 导出到 csv 甚至更快 我相信这是因为它只是一个特殊格
  • 每次我在同一语料库上训练时,LDA 模型都会生成不同的主题

    我正在使用Pythongensim从包含 231 个句子的小语料库中训练潜在狄利克雷分配 LDA 模型 然而 每次我重复这个过程 它都会产生不同的主题 为什么相同的LDA参数和语料每次生成不同的主题 如何稳定话题生成 我正在使用这个语料库
  • ggplot2,更改标题大小

    我希望我的主标题和轴标题具有与图中注释文本相同的字体大小 我使用 theme get 并发现文本大小为 12 所以我在主题声明中这样做了 这不起作用 我也尝试将相对大小发送为1 但这不起作用 I was hoping someone cou
  • 更改maven Surefire-plugin的输出目录

    我正在尝试更改 Maven 项目中的surefire plugin 生成的XML 文件的输出文件夹 我在report plugin的配置括号内以及maven site plugin中声明了目标输出文件夹 在文档 https maven ap
  • 单击 iOS 证书续订时出错

    当我使用管理器并单击 续订 按钮时 出现以下错误 特别 此团队中没有带有 XP 的 iOS 证书 App Store 没有为参数 deviceids 提供值 我不确定为什么会收到这些错误 并且希望得到任何帮助 指导 我遇到了同样的问题 我什
  • java lambda 可以有超过 1 个参数吗?

    在 Java 中 是否可以让 lambda 接受多种不同类型 IE 单变量工作原理 Function
  • 来自 Facebook Messenger 机器人对话的 API 身份验证

    通过与 facebook Messenger 平台上的机器人对话来使用外部 API 进行身份验证的最佳方法是什么 举一个广泛的例子 我希望我的机器人的用户在外部网站的自己的个人资料上创建项目 有没有办法从用户那里获取登录信息 或者将我的机器
  • Python 警告 - 删除自定义警告消息末尾的原始警告输出的任何方法

    我正在尝试在 Python 脚本中创建自定义警告消息 allfiles glob glob folderpath xlsx if not allfiles warnings warn No xlsx data files are found
  • 当前与 delphi 2007 一起使用的正确 indy 和 openssl 版本是哪个

    我将 indy 组件与 D2007 一起使用 并尝试列出 imap 邮箱中的邮件主题 我下载并安装了当前的 indy 新版本 10 6 0 5039 安装 x100 软件包 并尝试使用各种 openssl dll 版本 xp 机器上的 32
  • 在iOS中,使用Swift,如何获取iPhone的启动时间?

    在核心运动中 数据在继承自的类中返回CMLogItem 其中有一个timestamp财产 这timestamp is a TimeInterval这是设备启动以来的时间 如何获取设备启动时间 从评论中我发现ProcessInfo proce
  • 与错误共享相关的性能计数器事件

    我正在查看 OpenMP 程序的性能 特别是缓存和内存性能 不久前我发现了如何使用 Vtune 分析性能的指南 其中提到了需要注意的计数器 不过现在好像找不到说明书了 如果您知道我有问题的手册或者您知道计数器 事件 请告诉我 另外 如果您有
  • Google Apps 脚本 - 使用 .replace 方法删除空格对我不起作用

    我正在使用 Google Apps 脚本来创建应用程序 当我尝试从电子表格值中删除空格时遇到问题 我也在 stackoverflow 和其他论坛上引用了很多帖子和评论 他们都在谈论使用 replace方法 然而 replace方法对我不起作
  • 动态加载资源文件

    我想动态加载资源文件 如果我静态地执行它 它显然效果很好 System Media SoundPlayer player new System Media SoundPlayer Properties Resources 88 player
  • 如何分离wpf文本框中的背景图像?

    我是 WPF 新手 在我的项目中 我尝试了带有用户图标的用户名文本框 我的 XAML 代码 gt
  • 用一个命令截断 MySQL 数据库中的所有表?

    是否有一个查询 命令 可以在一次操作中截断数据库中的所有表 我想知道是否可以通过一个查询来完成此操作 删除 即删除表 mysql Nse show tables DATABASE NAME while read table do mysql
  • 如何在Java中查找与通配符字符串匹配的文件?

    这应该很简单 如果我有一个像这样的字符串 Test sample txt 那么获取与此模式匹配的文件列表的普遍接受的方法是什么 例如 它应该匹配 Test1 sample22b txt and Test4 sample spiffy txt
  • SQL Server FOR XML - 基本查询

    我已经获得了一个 XML 文档 我想通过 SQL 脚本生成该文档 但我没有做过类似的事情 也无法找到任何可以引导我生成所需的最终 XML 的示例 我不确定哪种可能的方法更适合我的需要 EXPLICIT 或 PATH 或者甚至可能 我希望在从
  • Laravel 以数组形式获取翻译文件的内容

    你能帮我解决以下问题吗 我需要将翻译文件的内容作为数组获取 无论它是否是PHP文件或一个JSON file 假设我的项目中有以下结构 laravel project resources lang en es file1 php file2
  • QueryDSL 与注释处理器的 Gradle 配置

    我搜索了很多关于配置的信息QueryDSL with Gradle 我想配置注释处理器 以使用特定的注释 Generated在生成的类上 但我只能在这里找到这个链接 Gradle 无法生成 QueryDSL 类 https stackove