<?xml version="1.0" encoding="UTF-8"?>
<project>

  <description>
    Kotlin compiler with KAPT annotation processing support.
  </description>

  <properties>
    <tile-merge-target>true</tile-merge-target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.release>11</java.release>
    <kotlin.version>1.3.61</kotlin.version>
    <kotlin.apiVersion>1.3</kotlin.apiVersion>
    <kotlin.jvmTarget>11</kotlin.jvmTarget>
    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
  </properties>

  <build>
    <sourceDirectory>src/main/kotlin</sourceDirectory>
    <testSourceDirectory>src/test/kotlin</testSourceDirectory>

    <plugins>

      <plugin>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-maven-plugin</artifactId>
        <version>${kotlin.version}</version>
        <configuration>
          <apiVersion>${kotlin.apiVersion}</apiVersion>
          <jvmTarget>${kotlin.jvmTarget}</jvmTarget>
        </configuration>

        <executions>
          <execution>
            <id>kapt</id>
            <goals>
              <goal>kapt</goal>
            </goals>
            <configuration tiles-keep-id="true" tiles-append="annotationProcessorPaths">
              <sourceDirs>
                <sourceDir>src/main/kotlin</sourceDir>
                <sourceDir>src/main/java</sourceDir>
              </sourceDirs>
              <annotationProcessorPaths>

                <!-- annotation processors added here -->  
 
              </annotationProcessorPaths>         
            </configuration>
          </execution>

          <execution>
            <configuration tiles-keep-id="true"/>
            <id>compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <configuration tiles-keep-id="true"/>
            <id>test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>test-compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <release>${java.release}</release>
        </configuration>
        <executions>
          <!-- Replacing default-compile as it is treated specially by maven -->
          <execution>
            <id>default-compile</id>
            <phase>none</phase>
            <configuration tiles-keep-id="true"/>
          </execution>
          <!-- Replacing default-testCompile as it is treated specially by maven -->
          <execution>
            <id>default-testCompile</id>
            <phase>none</phase>
            <configuration tiles-keep-id="true"/>
          </execution>
          <execution>
            <configuration tiles-keep-id="true"/>
            <id>java-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <configuration tiles-keep-id="true"/>
            <id>java-test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>

  </build>

</project>
