2017-10-08 166 views
0

我想从kotlin实体类生成jpa querydsl文件。Kotlin-Kapt注释处理器不能与maven配合使用

网上有一个非常好的例子,说明如何使用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> 

回答

1

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

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

我加了Maven/Querydsl example科特林-例子库。请注意,该示例具有稍微复杂的pom,因为它也支持Java/Kotlin组合项目。

+0

错过了分类器,没有它在Java上工作,救了我,谢谢! – kuhnroyal