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

<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<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>org.apache.mnemonic</groupId>
  <artifactId>mnemonic-parent</artifactId>
  <version>0.1.1-incubating</version>
  <packaging>pom</packaging>
  <name>Mnemonic Project Parent POM</name>
  <url>http://mnemonic.incubator.apache.org</url>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>17</version>
  </parent>

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

  <mailingLists>
    <mailingList>
      <name>Dev</name>
      <subscribe>dev-subscribe@mnemonic.incubator.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@mnemonic.incubator.apache.org</unsubscribe>
      <post>dev@mnemonic.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mnemonic-dev</archive>
    </mailingList>
    <mailingList>
      <name>Users</name>
      <subscribe>users-subscribe@mnemonic.incubator.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@mnemonic.incubator.apache.org</unsubscribe>
      <post>users@mnemonic.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mnemonic-users</archive>
    </mailingList>
    <mailingList>
      <name>Commits</name>
      <subscribe>commits-subscribe@mnemonic.incubator.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@mnemonic.incubator.apache.org</unsubscribe>
      <post>commits@mnemonic.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/mnemonic-commits</archive>
    </mailingList>
  </mailingLists>

  <prerequisites>
    <maven>${maven.min-version}</maven>
  </prerequisites>

  <scm>
    <url>https://git-wip-us.apache.org/repos/asf/incubator-mnemonic.git</url>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-mnemonic.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-mnemonic.git</developerConnection>
    <tag>HEAD</tag>
  </scm>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/MNEMONIC</url>
  </issueManagement>

  <developers>
    <developer>
      <id>garyw</id>
      <name>Gang Wang</name>
      <email>gang1.wang@intel.com</email>
      <url>http://www.intel.com</url>
      <organization>Intel</organization>
      <organizationUrl>http://www.intel.com</organizationUrl>
      <timezone>US/Pacific</timezone>
    </developer>
    <developer>
      <id>yanpingw</id>
      <name>Yanping Wang</name>
      <email>yanping.wang@intel.com</email>
      <url>http://www.intel.com</url>
      <organization>Intel</organization>
      <organizationUrl>http://www.intel.com</organizationUrl>
      <timezone>US/Pacific</timezone>
    </developer>
  </developers>

  <inceptionYear>2014</inceptionYear>

  <modules>
    <module>core</module>
    <module>collections</module>
    <module>examples</module>
    <module>allocator-services</module>
  </modules>

  <properties>
    <maven.min-version>3.2.1</maven.min-version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <skipTests>true</skipTests>
    <allocator.service.dir>${basedir}/../allocator-services/service-dist</allocator.service.dir>
    <github.global.server>github</github.global.server>
    <buildtools.dir>${basedir}/build-tools</buildtools.dir>
    <gpg.keyname>apache.org</gpg.keyname>
  </properties>

  <repositories>
    <repository>
      <id>central</id>
      <!-- This should be at top, it makes maven try the central repo first and then others and hence faster dep resolution -->
      <name>Maven Repository</name>
      <url>https://repo1.maven.org/maven2</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>bintray</id>
      <name>bintray</name>
      <url>http://dl.bintray.com/flowcomputing/commons</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <url>https://repo1.maven.org/maven2</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <dependencies>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
	<groupId>org.testng</groupId>
	<artifactId>testng</artifactId>
	<version>6.8.17</version>
	<scope>test</scope>
      </dependency>
      <dependency>
	<groupId>org.flowcomputing.commons</groupId>
	<artifactId>commons-resgc</artifactId>
	<version>0.8.9</version>
      </dependency>
      <dependency>
	<groupId>org.flowcomputing.commons</groupId>
	<artifactId>commons-primitives</artifactId>
	<version>0.6.0</version>
      </dependency>
      <dependency>
	<groupId>com.squareup</groupId>
	<artifactId>javapoet</artifactId>
	<version>1.6.1</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <!--plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-clean-plugin</artifactId>
	<executions>
	  <execution>
	    <id>auto-clean</id>
	    <phase>initialize</phase>
	    <goals>
	      <goal>clean</goal>
	    </goals>
	  </execution>
	</executions>
	<configuration>
	  <filesets>
	    <fileset>
	      <directory>.</directory>
	      <includes>
		<include>*.dat</include>
	      </includes>
	    </fileset>
	  </filesets>
	</configuration>
      </plugin-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.4</version>
        <dependencies>
	  <dependency>
	    <!--
		| allows markdown syntax for site generation. To use it place files below
		| src/site/markdown/[filename].md
	    -->
	    <groupId>org.apache.maven.doxia</groupId>
	    <artifactId>doxia-module-markdown</artifactId>
	    <version>1.7</version>
	  </dependency>
	</dependencies>
        <configuration>
	  <skipDeploy>true</skipDeploy>
	</configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
	  <checkoutDirectory>${project.build.directory}/scmpublish</checkoutDirectory>
	  <checkinComment>Publishing site for ${project.artifactId}:${project.version}</checkinComment>
	  <content>${project.reporting.outputDirectory}/../staging</content>
	  <skipDeletedFiles>true</skipDeletedFiles>
	  <pubScmUrl>scm:git:https://github.com/NonVolatileComputing/Mnemonic.git</pubScmUrl>
	  <scmBranch>gh-pages</scmBranch> <!-- branch with static site -->
	</configuration>
      </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
        </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>2.17</version>
          <configuration>
            <configLocation>build-tools/mnemonic-checkstyle.xml</configLocation>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
            <encoding>UTF-8</encoding>
            <failOnViolation>true</failOnViolation>
          </configuration>
          <executions>
            <execution>
              <id>validate</id>
              <phase>validate</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
	<plugin>
	  <groupId>org.apache.maven.plugins</groupId>
	  <artifactId>maven-clean-plugin</artifactId>
	  <version>3.0.0</version>
	</plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>
            <compilerArgs>
              <arg>-XDignore.symbol.file</arg>
              <arg>-XDenableSunApiLintControl</arg>
            </compilerArgs>
            <source>1.7</source>
            <target>1.7</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.bsc.maven</groupId>
          <artifactId>maven-processor-plugin</artifactId>
          <version>2.2.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.8</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
          <configuration>
            <skipTests>${skipTests}</skipTests>
	    <enableAssertions>true</enableAssertions>
	    <argLine>-Djava.ext.dirs=${allocator.service.dir}</argLine>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>1.1</version>
        </plugin>
        <plugin>
          <groupId>com.github.wvengen</groupId>
          <artifactId>proguard-maven-plugin</artifactId>
          <version>2.0.11</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>2.4.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.6</version>
          <configuration>
            <forceCreation>true</forceCreation>
	    <archive>
	      <addMavenDescriptor>false</addMavenDescriptor>
	    </archive>
          </configuration>
        </plugin>
        <plugin>
	  <groupId>org.codehaus.mojo</groupId>
	  <artifactId>exec-maven-plugin</artifactId>
	  <version>1.4.0</version>
	</plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <useReleaseProfile>true</useReleaseProfile>
            <releaseProfiles>apache-release</releaseProfiles>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <goals>deploy</goals>
            <tagNameFormat>@{project.artifactId}-@{project.version}</tagNameFormat>
            <pushChanges>false</pushChanges>
            <localCheckout>true</localCheckout>
          </configuration>
          <executions>
            <execution>
              <id>default</id>
              <goals>
                <goal>perform</goal>
              </goals>
              <configuration>
                <pomFileName>pom.xml</pomFileName>
              </configuration>
            </execution>
          </executions>
        </plugin>

      </plugins>
    </pluginManagement>

  </build>

<profiles>
  <profile>
    <id>activate-buildtools-in-module</id>
    <activation>
      <file>
        <exists>${basedir}/../build-tools/mnemonic-checkstyle.xml</exists>
      </file>
    </activation>
    <properties>
      <buildtools.dir>${basedir}/../build-tools</buildtools.dir>
    </properties>
  </profile>
  <profile>
    <id>activate-buildtools-in-submodule</id>
    <activation>
      <file>
        <exists>${basedir}/../../build-tools/mnemonic-checkstyle.xml</exists>
      </file>
    </activation>
    <properties>
      <buildtools.dir>${basedir}/../../build-tools</buildtools.dir>
    </properties>
  </profile>

  <profile>
    <id>nochecks</id>
    <properties>
      <pmd.skip>true</pmd.skip>
      <checkstyle.skip>true</checkstyle.skip>
    </properties>
  </profile>

  <profile>
    <id>apache-release</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <finalName>apache-mnemonic-${project.version}</finalName>
            <descriptor>build-tools/source-assembly.xml</descriptor>
            <formats>
              <format>tar.gz</format>
            </formats>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <configuration>
            <!-- Disable this plugin so that it won't generate a DEPENDENCIES file in the source tar -->
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>

  <profile>
    <id>release-sign-artifacts</id>
    <activation>
      <property>
	<name>performRelease</name>
	<value>true</value>
      </property>
    </activation>
    <build>
      <plugins>
	<plugin>
	  <artifactId>maven-gpg-plugin</artifactId>
	  <version>1.6</version>
	  <executions>
	    <execution>
	      <id>sign-artifacts</id>
	      <phase>verify</phase>
	      <goals>
		<goal>sign</goal>
	      </goals>
              <configuration>
                <keyname>${gpg.keyname}</keyname>
                <useAgent>true</useAgent>
              </configuration>
	    </execution>
	  </executions>
	</plugin>
      </plugins>
    </build>
  </profile>
</profiles>

  <reporting>
    <plugins>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-project-info-reports-plugin</artifactId>
	<version>2.6</version>
	<reportSets>
	  <reportSet>
	    <reports>
	      <report>index</report>
	    </reports>
	  </reportSet>
	</reportSets>
      </plugin>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-javadoc-plugin</artifactId>
	<configuration>
	  <additionalparam>-Xdoclint:none</additionalparam>
	</configuration>
	<reportSets>
	  <reportSet>
	    <reports>
	      <report>javadoc</report>
	      <report>test-javadoc</report>
	    </reports>
	  </reportSet>
	  <reportSet>
	    <id>aggregate</id>
	    <inherited>false</inherited>
	    <reports>
	      <report>aggregate</report>
	    </reports>
	  </reportSet>
	</reportSets>
      </plugin>
    </plugins>
  </reporting>

</project>
