 <?xml version="1.0"?>
<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>
  <groupId>com.google.android.apps.common.testing</groupId>
  <artifactId>TestKit</artifactId>
  <version>1.1</version>
  <packaging>pom</packaging>
  <modules>
    <module>espresso</module>
    <module>testapp</module>
    <module>testapp_test</module>
    <module>testrunner</module>
    <module>testrunner-runtime</module>
  </modules>
  <properties>
    <android.plugin.version>3.8.1</android.plugin.version>
    <android.v4.support.version>19.0.1</android.v4.support.version>
    <android.v7.support.version>19.0.1</android.v7.support.version>
    <dagger.version>1.1.0</dagger.version>
    <dexmaker.version>1.0</dexmaker.version>
    <guava.version>14.0.1</guava.version>
    <hamcrest.version>1.1</hamcrest.version>
    <platform.version>4.1.1.4</platform.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.5</java.version>
    <javax.inject.version>1</javax.inject.version>
    <javax.annotation.version>1.2</javax.annotation.version>
    <jsr305.version>1.3.9</jsr305.version>
    <junit.version>3.8.1</junit.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>android.support</groupId>
        <artifactId>compatibility-v4</artifactId>
        <version>${android.v4.support.version}</version>
      </dependency>
      <dependency>
        <groupId>android.support</groupId>
        <artifactId>compatibility-v7</artifactId>
        <version>${android.v7.support.version}</version>
        <type>jar</type>
      </dependency>
      <dependency>
        <groupId>android.support</groupId>
        <artifactId>compatibility-v7-appcompat</artifactId>
        <version>${android.v7.support.version}</version>
        <type>jar</type>
      </dependency>
      <dependency>
        <groupId>android.support</groupId>
        <version>${android.v7.support.version}</version>
        <artifactId>compatibility-v7</artifactId>
        <type>apklib</type>
      </dependency>
      <dependency>
        <groupId>android.support</groupId>
        <version>${android.v7.support.version}</version>
        <artifactId>compatibility-v7-appcompat</artifactId>
        <type>apklib</type>
      </dependency>
      <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>${platform.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android-test</artifactId>
        <version>${platform.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${jsr305.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.dexmaker</groupId>
        <version>${dexmaker.version}</version>
        <artifactId>dexmaker</artifactId>
      </dependency>
      <dependency>
        <groupId>com.google.dexmaker</groupId>
        <version>${dexmaker.version}</version>
        <artifactId>dexmaker-mockito</artifactId>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.squareup.dagger</groupId>
        <artifactId>dagger</artifactId>
        <version>${dagger.version}</version>
      </dependency>
      <dependency>
        <groupId>com.squareup.dagger</groupId>
        <artifactId>dagger-compiler</artifactId>
        <version>${dagger.version}</version>
      </dependency>
       <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${javax.annotation.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>${javax.inject.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-integration</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.1</version>
          <configuration>
            <source>1.5</source>
            <target>1.5</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.9.1</version>
          <configuration>
            <show>package</show>
            <excludePackageNames>*.intento.*:android.support.*:*.testapp.*:*.tests.*</excludePackageNames>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.jayway.maven.plugins.android.generation2</groupId>
          <artifactId>android-maven-plugin</artifactId>
          <version>${android.plugin.version}</version>
          <extensions>true</extensions>
          <configuration>
            <sdk>
              <platform>16</platform>
            </sdk>
            <extractDuplicates>true</extractDuplicates>
            <undeployBeforeDeploy>true</undeployBeforeDeploy>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
