<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         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>

  <artifactId>java-spec</artifactId>
  <version>2.5.3</version>

  <parent>
    <groupId>info.kfgodel</groupId>
    <artifactId>java-pom</artifactId>
    <version>0.1.3</version>
  </parent>

  <name>JavaSpec</name>
  <description>Junit testing extension to allow specs expressibility</description>
  <url>https://github.com/kfgodel/java-spec</url>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <scm>
    <developerConnection>scm:git:ssh://github.com/kfgodel/java-spec.git</developerConnection>
    <connection>${project.scm.developerConnection}</connection>
    <url>${project.url}</url>
  </scm>

  <properties>
    <version.junit>4.11</version.junit>
    <version.assertj>3.11.1</version.assertj>

    <version.kotlin>1.3.31</version.kotlin>
    <!-- Allows intermediate compilation to increase compilation speed -->
    <kotlin.compiler.incremental>true</kotlin.compiler.incremental>
  </properties>

  <dependencies>

    <!-- Test runner -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${version.junit}</version>
    </dependency>

    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>${version.assertj}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib-jdk8</artifactId>
      <version>${version.kotlin}</version>
      <optional>true</optional>
    </dependency>
    
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-test-junit</artifactId>
      <version>${version.kotlin}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>

      <!-- kotlin-maven-plugin should be run before maven-compiler-plugin (dual language compiling) -->
      <plugin>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-maven-plugin</artifactId>
        <version>${version.kotlin}</version>
        <executions>
          <execution>
            <id>compile</id>
            <goals> <goal>compile</goal> </goals>
            <configuration>
              <sourceDirs>
                <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
                <sourceDir>${project.basedir}/src/main/java</sourceDir>
              </sourceDirs>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <goals> <goal>test-compile</goal> </goals>
            <configuration>
              <sourceDirs>
                <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
                <sourceDir>${project.basedir}/src/test/java</sourceDir>
              </sourceDirs>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <jvmTarget>1.8</jvmTarget>
        </configuration>
      </plugin>

      <!-- Replace default java compiler order to include kotlin code -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <executions>
          <!-- Replacing default-compile as it is treated specially by maven -->
          <execution>
            <id>default-compile</id>
            <phase>none</phase>
          </execution>
          <!-- Replacing default-testCompile as it is treated specially by maven -->
          <execution>
            <id>default-testCompile</id>
            <phase>none</phase>
          </execution>
          <execution>
            <id>java-compile</id>
            <phase>compile</phase>
            <goals> <goal>compile</goal> </goals>
          </execution>
          <execution>
            <id>java-test-compile</id>
            <phase>test-compile</phase>
            <goals> <goal>testCompile</goal> </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <developers>
    <developer>
      <id>dlgarcia</id>
      <name>Dario L Garcia</name>
      <email>dario.garcia@10pines.com</email>
      <organization>10Pines SRL</organization>
      <organizationUrl>https://www.10pines.com/</organizationUrl>
      <roles>
        <role>architect</role>
        <role>developer</role>
      </roles>
    </developer><developer>
      <id>nrainhart</id>
      <name>Nicolas Rainhart</name>
      <email>nrainhart@10pines.com</email>
      <organization>10Pines SRL</organization>
      <organizationUrl>https://www.10pines.com/</organizationUrl>
      <roles>
        <role>contributor</role>
        <role>developer</role>
      </roles>
    </developer>
  </developers>

</project>
