代码之家  ›  专栏  ›  技术社区  ›  Funzo

Kotlin Kapt注释处理器不与maven一起工作

  •  2
  • Funzo  · 技术社区  · 7 年前

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

    然而,我试图在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>
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   yanex    7 年前

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

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

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