<?xml version="1.0" encoding="ISO-8859-1"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.objenesis</groupId>
    <artifactId>objenesis-parent</artifactId>
    <version>2.5</version>
  </parent>
  <artifactId>objenesis-tck-android</artifactId>
  <name>Objenesis Android TCK</name>
  <description>Objenesis' TCK built for Android devices</description>
  <packaging>apk</packaging>

  <properties>
    <android.home>${env.ANDROID_HOME}</android.home>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.objenesis</groupId>
      <artifactId>objenesis</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>objenesis-tck</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>4.1.1.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android-test</artifactId>
      <version>4.1.1.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.simpligility.maven.plugins</groupId>
          <artifactId>android-maven-plugin</artifactId>
          <version>4.4.3</version>
          <extensions>true</extensions>
          <configuration>
            <testFailSafe>false</testFailSafe>
            <test>
              <instrumentationPackage>org.objenesis.tck.android</instrumentationPackage>
              <instrumentationRunner>android.test.InstrumentationTestRunner</instrumentationRunner>
            </test>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.keyboardsamurais.maven</groupId>
        <artifactId>maven-timestamp-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.mycila.maven-license-plugin</groupId>
        <artifactId>maven-license-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-remote-resources-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>com.simpligility.maven.plugins</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <configuration>
          <sdk>
            <platform>25</platform>
          </sdk>
        </configuration>
        <extensions>true</extensions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <inherited>false</inherited>
        <executions>
          <execution>
            <id>execute</id>
            <phase>integration-test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>${android.home}/platform-tools/adb</executable>
              <arguments>
                <argument>shell</argument>
                <argument>am</argument>
                <argument>instrument</argument>
                <argument>-w</argument>
                <argument>org.objenesis.tck.android/.TckInstrumentation</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>

  </build>

   <profiles>
      <profile>
         <!-- To activate in IntelliJ. This will allow compilation because it seems IntelliJ can't retrieve
              the objenesis classes shaded in the objenesis-tck jar -->
         <id>intellij-specific</id>
         <dependencies>
            <dependency>
               <groupId>${project.groupId}</groupId>
               <artifactId>objenesis</artifactId>
               <version>${project.version}</version>
            </dependency>
         </dependencies>
      </profile>
   </profiles>
</project>
