千家信息网

怎么Idea的GenerateSources无法生成QueryDSL问题

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"怎么Idea的GenerateSources无法生成QueryDSL问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么Idea的Ge
千家信息网最后更新 2026年11月02日怎么Idea的GenerateSources无法生成QueryDSL问题

本篇内容主要讲解"怎么Idea的GenerateSources无法生成QueryDSL问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么Idea的GenerateSources无法生成QueryDSL问题"吧!

QueryDSL简介

官网

1 QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。

2 Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。

3 借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。

今天是2020年第一天在家办公,就出现了跟在公司不一样的现象,deploy项目到maven库时失败,之前一直成功。

查到原因在于QueryDSL类没有生成,但为何在公司可以而在家里就不行呢?

鉴于Idea的"Generate Sources And Update Folders"操作一闪即过,信息太少,所以不得先从原理上追溯

1. 首先的疑问是:当执行Idea的"Generate Sources And Update Folders"操作时,都发生了什么?

参考stackoverflow,解释如下

In order to get generated sources automatically imported as source folders configure corresponding pluginsso that they put them into target/generated-sources/, where subdir is any folder name you prefer.The subdir folder is necessary to distinguish sources from different tools and also to exclude some special generated sources (e.g. groovy stubs).Please note that even if you manually configure some source folders under target/generated-sources of this folder itself,IDEA will rewrite them according to your pom.xml.Any time you want to generate sources you simply execute the corresponding goal,bound for generation (usually generate-sources, generate-test-sources). After that IDEA will pick up new folders and set them up.As you can see Generate Sources action runs the generate-sources Maven phase for any plug-ins in your pom.xml that do generate any sources."Generate Source"实际上是用所有可以生成source的插件执行Maven的generate-sources步骤

这里需要了解的是Maven的phase都有哪些?generate-sources是什么时机执行的?

答案是generates阶段会在validate和compile阶段之间执行,详细可参考这里

2. 那么第二个问题来了,我们的项目中哪些plugin可以执行generate sources?

很容易找到下面的配置(此插件开源在github上)

com.mysema.maven apt-maven-plugin process target/generated-sources/java com.querydsl.apt.jpa.JPAAnnotationProcessor com.querydsl querydsl-apt 4.1.3

github的解释很简单:apt-maven-plugin provides Maven integration of the Java 6 APT functionality.

这里有必要了解下什么是Java APT?

APT(Annotation Process Tool),是一种在代码编译时处理注解,按照一定的规则,生成相应的java文件,多用于对自定义注解的处理,

目前比较流行的Dagger2, ButterKnife, EventBus3都是采用APT技术,对运行时的性能影响很小也就是说,APT是用代码生成代码的工具,会在process过程生成java文件,那么为什么我们最终生成的往往只有class文件呢?这是因为很多插件都做了第二步的清理操作。

至于Java8之后APT被""Pluggable Annotation Processing API"."替换,那就是后话了 另外,此插件依赖querydsl,所以querydsl也有必要了解下

QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。

目前QueryDSL支持的平台包括JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。

所以说我们项目中所用的QueryDSL是在JPA之上的,是为了补充JPA的复杂查询支持不足而引入的

3. 那么如何手动单独执行此APT的process呢?

这样考虑的目的其实就是为了得到更多信息,此步骤可以用Idea的此选项右键执行,或者在command中执行"mvn apt:process"

会发现输出log中输出以下警告

'build.plugins.plugin.version' for com.mysema.maven:apt-maven-plugin is missing. @ line 46, column 21

于是就在pom配置中添加plugin的最新version

1.1.3

再次generate,生成成功!

到此,相信大家对"怎么Idea的GenerateSources无法生成QueryDSL问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

查询 生成 框架 支持 问题 平台 插件 代码 文件 类型 项目 安全 必要 成功 也就是 也就是说 信息 公司 内容 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技官网 互联网科技开发公司 合肥互联网科技公司 深圳互联网络科技有限公司 山东吉时兔互联网科技有限公司 哈尔滨新华互联网科技学院 互联网教育科技公司vipkid 随着互联网科技发展 顶级互联网科技成果有哪些 互联网科技创新服务 杭州壁岐互联网科技有限公司 呼和浩特新华互联网科技学院 中国科技创新与世界互联网大会 互联网公司高科技产品 厦门江牛科技互联网 互联网风格科技公司名称 普陀区互联网教育科技管理办法 北京天晋互联网科技有限公司 前海云享互联网科技 如何强化互联网金融科技 北京路客互联网科技有限公司 深圳科技互联网 互联网科技的未来发展 银川新华互联网科技学校地址 常德市电业局互联网科技部 企晟互联网信息科技有限公司 国大互联网教育科技有限公司薪资 2021互联网科技公司排名 梅州GM互联网络科技有限公司 半导体是互联网高科技吗
0