maven - Kotlin-Kapt 注解处理器无法与 Maven 一起使用

标签 maven kotlin querydsl kapt annotation-processor

我想从 kotlin 实体类生成 jpa querydsl 文件。

网上有一个非常好的示例,介绍如何使用 gradle https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle 生成 dsl 文件。 .

但是我尝试在 Maven 中实现这一点,但没有成功。 我当前的 pom 如下。有人知道问题可能是什么吗? 提前致谢。

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>test</groupId>
<artifactId>test-jpa</artifactId>
<version>2.7.0-SNAPSHOT</version>

<properties>
    <kotlin.version>1.1.50</kotlin.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.5.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jre8</artifactId>
        <version>${kotlin.version}</version>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <artifactId>kotlin-maven-plugin</artifactId>
            <groupId>org.jetbrains.kotlin</groupId>
            <version>${kotlin.version}</version>

            <executions>
                <execution>
                    <id>kapt</id>
                    <goals>
                        <goal>kapt</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>${project.basedir}/src/main/java</sourceDir>
                        </sourceDirs>
                        <annotationProcessorPaths>
                            <annotationProcessorPath>
                                <groupId>com.mysema.querydsl</groupId>
                                <artifactId>querydsl-apt</artifactId>
                                <version>3.6.4</version>
                            </annotationProcessorPath>
                        </annotationProcessorPaths>
                    </configuration>
                </execution>

                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <sourceDirs>
                            <sourceDir>src/main/java</sourceDir>
                            <sourceDir>${project.build.sourceDirectory}</sourceDir>
                        </sourceDirs>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>

</build>

最佳答案

潜在的问题是您错过了 jpa 分类器:

<annotationProcessorPath>
    <groupId>com.mysema.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>3.6.3</version>
    <classifier>jpa</classifier>
</annotationProcessorPath>

我添加了Maven/Querydsl examplekotlin-examples 存储库。请注意,该示例的 pom 稍微复杂一些,因为它还支持 Java/Kotlin 组合项目。

关于maven - Kotlin-Kapt 注解处理器无法与 Maven 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629818/

相关文章:

Java:Maven clean 后构建中缺少 log4j.properties

java - 如何从pom中删除传递依赖

java - 没有为 XSD 和 WSDL 文件生成 XMLBean 类 (Maven)

mysql - Hibernate 奇怪的行为与 @OneToMany 和更新

java - 如何在 Android Q(API 级别 29)中列出所有内部存储文件夹?

具有多个子查询优化的mysql查询

unit-testing - 如何测试 QueryDsl 谓词

java - 使用 Maven 时在 Eclipse 中更改 Android R.java 的输出文件夹

android - 是否可以将 kotlin 中的高阶函数映射到字符串

querydsl - 如何将涉及连接的 JPAQuery 对象转换为谓词?