<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.terracotta</groupId>
    <artifactId>terracotta-root</artifactId>
    <version>4.4.0.7.7</version>
  </parent>
  <artifactId>build-parent</artifactId>
  <name>build-parent</name>
  <packaging>pom</packaging>
  <licenses>
    <license>
      <name>Terracotta Public License</name>
      <url>http://www.terracotta.org/legal/terracotta-public-license</url>
    </license>
  </licenses>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <core-storage-api.version>1.4</core-storage-api.version>
    <heap-core-storage.version>1.2.1</heap-core-storage.version>
    <bigmemory-core-storage.version>2.1.3</bigmemory-core-storage.version>
    <search.version>1.5.14</search.version>
    <management-core.version>4.4.0.7.7</management-core.version>
    <session-management.version></session-management.version>
    <tc-messaging.version>1.1.6</tc-messaging.version>
    <terracotta-license.version>1.2.3</terracotta-license.version>
    <toolkit-api.version>2.10</toolkit-api.version>
    <toolkit-api-internal.version>1.19</toolkit-api-internal.version>
    <ehcache.version>2.11.0.7.7</ehcache.version>
    <tcconfig.version>9.6</tcconfig.version>
    <linked-child-process.version>2.0.2</linked-child-process.version>
    <skip.testjar>false</skip.testjar>
    <listName>checkshort.txt</listName>
    <localMavenRepository>${user.home}/.m2/repository</localMavenRepository>
    <checkstyle-suppressions-file>${basedir}/../checkstyle/suppressions.xml</checkstyle-suppressions-file>
    <tc.tests.configuration.properties.file>${project.build.testOutputDirectory}/tc.tests.properties</tc.tests.configuration.properties.file>
    <tc.system.tests.properties>${project.build.testOutputDirectory}/com/tc/properties/tests.properties</tc.system.tests.properties>
    <tc.config>-Dtc.config=tc-config.xml</tc.config>
    <tc.base-dir>${project.build.directory}</tc.base-dir>
    <com.tc.l1.modules.repositories>${localMavenRepository}</com.tc.l1.modules.repositories>
    <tc.tests.info.bootjars.normal>${basedir}/../target/dso-boot.jar</tc.tests.info.bootjars.normal>
    <tc.tests.info.property-files>${tc.tests.configuration.properties.file}</tc.tests.info.property-files>
    <tc.tests.info.temp-root>${project.build.directory}/temp</tc.tests.info.temp-root>
    <tc.tests.info.linked-child-process-classpath>${localMavenRepository}/org/terracotta/linked-child-process/${linked-child-process.version}/linked-child-process-${linked-child-process.version}.jar</tc.tests.info.linked-child-process-classpath>
    <tc.tests.info.junit-test-timeout-inseconds>1800</tc.tests.info.junit-test-timeout-inseconds>
    <tc.tests.info.l2.startup.mode>internal</tc.tests.info.l2.startup.mode>
    <surefire.min-memory>64m</surefire.min-memory>
    <surefire.max-memory>1g</surefire.max-memory>
    <surefire.additional-jvm-args/>
    <surefire.additional-jvm-module-args/>
    <surefire.jvm.mode>-server</surefire.jvm.mode>
    <surefire.argLine>${surefire.jvm.mode}
      -Xms${surefire.min-memory}
      -Xmx${surefire.max-memory}
      -XX:+HeapDumpOnOutOfMemoryError
      -DlistName=${listName}
      -Dtc.base-dir=${tc.base-dir} ${tc.config}
      -Dtc.dso.globalmode=false
      -Dtc.tests.info.property-files=${tc.tests.info.property-files}
      -Dcom.tc.l1.modules.repositories=${localMavenRepository}
      -Dcom.tc.properties=${tc.system.tests.properties}
      -Dtc.install-root.ignore-checks=true
      -Dcom.sun.management.jmxremote
      ${surefire.additional-jvm-args}
      ${surefire.additional-jvm-module-args}
      -Djdk.attach.allowAttachSelf
    </surefire.argLine>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.terracotta.internal</groupId>
        <artifactId>core-storage-api</artifactId>
        <version>${core-storage-api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta.internal</groupId>
        <artifactId>heap-core-storage</artifactId>
        <version>${heap-core-storage.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta.internal</groupId>
        <artifactId>bigmemory-core-storage</artifactId>
        <version>${bigmemory-core-storage.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>search</artifactId>
        <version>${search.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>tc-messaging</artifactId>
        <version>${tc-messaging.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>linked-child-process</artifactId>
        <version>${linked-child-process.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>jmxremote_optional-tc</artifactId>
        <version>1.0.8</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>management-core</artifactId>
        <version>${management-core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>management-core-resources</artifactId>
        <version>${management-core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta.license</groupId>
        <artifactId>terracotta-license</artifactId>
        <version>${terracotta-license.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>tcconfig</artifactId>
        <version>${tcconfig.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>tc-l1-reconnect-properties</artifactId>
        <version>${tcconfig.version}</version>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>tcstats</artifactId>
        <version>${tcconfig.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-inline</artifactId>
    </dependency>
    <dependency>
      <groupId>org.terracotta</groupId>
      <artifactId>linked-child-process</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.terracotta.junit</groupId>
      <artifactId>test-listeners</artifactId>
      <version>1.0.3</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>${basedir}/src/main/filtered-resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>groovy-maven-plugin</artifactId>
          <version>${groovy-maven-plugin.version}</version>
          <executions>
            <execution>
              <id>generate-test-properties</id>
              <phase>process-test-resources</phase>
              <goals>
                <goal>execute</goal>
              </goals>
              <configuration>
                <source>
                  Properties outputProperties = new Properties()
                  properties.each { key, value -&gt;
                    if (key =~ /^tc\.tests\./) {
                      outputProperties.setProperty(key, value)
                    }
                  }
                  String propertiesFileName = properties.getProperty(
                      "tc.tests.configuration.properties.file")
                  File propertiesFile = new File(propertiesFileName)
                  assert !propertiesFile.isDirectory()
                  propertiesFile.parentFile.mkdirs()
                  def outputStream = new FileOutputStream(propertiesFile)
                  try {
                    outputProperties.store(outputStream, "")
                  }
                  finally {
                    outputStream.close()
                  }
                  </source>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.terracotta</groupId>
          <artifactId>maven-forge-plugin</artifactId>
          <version>${maven-forge-plugin.version}</version>
          <executions>
            <execution>
              <id>default-test</id>
              <configuration>
                <properties>
                  <property>
                    <name>listener</name>
                    <value>net.sf.ehcache.SystemExitListener</value>
                  </property>
                </properties>
                <failIfNoTests>false</failIfNoTests>
                <printSummary>true</printSummary>
                <reportFormat>plain</reportFormat>
                <includes>
                  <include>**/*Test.java</include>
                </includes>
                <forkCount>1</forkCount>
                <reuseForks>false</reuseForks>
                <forkedProcessTimeoutInSeconds>${tc.tests.info.junit-test-timeout-inseconds}</forkedProcessTimeoutInSeconds>
                <useSystemClassLoader>true</useSystemClassLoader>
                <useManifestOnlyJar>true</useManifestOnlyJar>
                <trimStackTrace>false</trimStackTrace>
                <workingDirectory>${project.build.directory}/temp</workingDirectory>
                <devLog>true</devLog>
                <argLine>${surefire.argLine}</argLine>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <executions>
            <execution>
              <goals>
                <goal>test-jar</goal>
              </goals>
              <configuration>
                <skip>${skip.testjar}</skip>
                <excludes>
                  <exclude>**/*Test.class</exclude>
                  <exclude>build-data.txt</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>test-jar-no-fork</goal>
              </goals>
              <configuration>
                <forceCreation>true</forceCreation>
                <excludeResources>true</excludeResources>
                <excludes>
                  <exclude>**/*Test.java</exclude>
                  <exclude>**/*TestApp.java</exclude>
                  <exclude>build-data.txt</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.terracotta</groupId>
        <artifactId>maven-forge-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>client-jvm</id>
      <properties>
        <surefire.jvm.mode>-client</surefire.jvm.mode>
      </properties>
    </profile>
    <profile>
      <id>server-jvm</id>
      <properties>
        <surefire.jvm.mode>-server</surefire.jvm.mode>
      </properties>
    </profile>
    <profile>
      <id>workaround-windows</id>
      <activation>
        <os>
          <family>windows</family>
        </os>
      </activation>
      <properties>
        <localMavenRepository>C:\DOCUME~1\${user.name}\.m2\repository</localMavenRepository>
      </properties>
    </profile>
    <profile>
      <id>check-short</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmavenplus</groupId>
            <artifactId>gmavenplus-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.terracotta</groupId>
            <artifactId>maven-forge-plugin</artifactId>
            <configuration>
              <useReflectionFile>true</useReflectionFile>
              <groups>org.terracotta.test.categories.CheckShorts</groups>
              <failIfNoTests>false</failIfNoTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
