You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Java 9+Querydsl环境下apt-maven-plugin生成Q类失败求助

解决Java 9 + Maven + Querydsl环境下APT生成Q-types卡住的问题

我之前也踩过这个坑!Java 9的模块系统确实会给Querydsl的APT处理带来不少麻烦,尤其是添加module-info.java之后,旧的apt-maven-plugin在模块模式下的兼容性很差。下面是我亲测有效的解决方案:

1. 替换apt-maven-plugin为Maven编译器内置的APT支持

Java 9之后,官方推荐直接使用maven-compiler-plugin的APT功能,而不是单独的APT插件。把你原来的apt-maven-plugin配置替换成下面这样:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version> <!-- 至少用3.8.x版本,支持Java 9+ -->
    <configuration>
        <release>9</release>
        <annotationProcessorPaths>
            <path>
                <groupId>com.querydsl</groupId>
                <artifactId>querydsl-apt</artifactId>
                <version>${querydsl.version}</version>
                <classifier>jpa</classifier> <!-- 如果你用JPA的话 -->
            </path>
            <path>
                <groupId>org.hibernate.javax.persistence</groupId>
                <artifactId>hibernate-jpa-2.1-api</artifactId>
                <version>1.0.2.Final</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

2. 调整module-info.java的模块声明

Querydsl需要访问你的实体类,并且在生成Q-types时需要反射权限,所以必须在模块声明里做如下配置:

module your.module.name {
    // 引入Querydsl相关模块
    requires querydsl.core;
    requires querydsl.jpa;
    requires javax.persistence;
    
    // 开放你的实体类所在包给Querydsl,允许它反射访问
    opens com.yourpackage.entities to querydsl.core;
    
    // 如果你的Q-types生成在同一个模块里,还要导出这个包(可选,看你是否在其他地方使用Q-types)
    exports com.yourpackage.entities.querydsl;
}

3. 确保Querydsl版本兼容Java 9

一定要使用Querydsl 4.2.0及以上版本,旧版本(比如3.x)完全不支持Java 9的模块系统,会出现各种奇怪的兼容性问题。

4. 清理Maven缓存并重新构建

有时候缓存的旧编译产物会干扰新的模块编译,执行以下命令彻底清理后重新构建:

mvn clean install -U

如果按照上面的步骤操作,应该就能解决APT生成Q-types卡住的问题了。我当时就是靠这套配置搞定了Java 9下的Querydsl环境。

内容的提问来源于stack exchange,提问作者bfeater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:56:58