2017-10-08 3 views
0

Je souhaite générer des fichiers jpa querydsl à partir de classes d'entités kotlin.Le processeur d'annotation Kotlin-Kapt ne fonctionne pas avec maven

Il existe de très bons exemples en ligne sur la façon de générer les fichiers dsl en utilisant la graduation https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle.

Cependant, j'ai essayé de l'implémenter dans maven et n'ai pas eu de chance. Mon pom actuel est ci-dessous. Est-ce que quelqu'un sait quel pourrait être le problème? Merci d'avance.

<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> 

Répondre

1

Le problème potentiel est que vous avez manqué le classificateur jpa:

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

J'ai ajouté un Maven/Querydsl example au référentiel Kotlin-exemples. Notez que l'exemple a un pom légèrement plus compliqué car il supporte aussi les projets combinés Java/Kotlin.

+0

Raté le classificateur, fonctionne sans Java, m'a sauvé, merci! – kuhnroyal