<?xml version="1.0" encoding="UTF-8"?>
<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 ! 
 !     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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>edu.uci.ics.hyracks</groupId>
  <artifactId>pregelix</artifactId>
  <version>0.2.11-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>pregelix</name>

  <properties>
    <jvm.extraargs />
  </properties>

  <profiles>
    <profile>
      <id>macosx</id>
      <activation>
        <os>
          <name>mac os x</name>
        </os>
        <jdk>1.7</jdk>
      </activation>
      <properties>
        <jvm.extraargs>-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.KQueueSelectorProvider</jvm.extraargs>
      </properties>
    </profile>
  </profiles>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.0</version>
        <configuration>
            <goals>package source:jar javadoc:jar deploy:deploy</goals>
        </configuration>
      </plugin>
      <plugin>
      	<groupId>org.codehaus.mojo</groupId>
      	<artifactId>versions-maven-plugin</artifactId>
      	<version>1.2</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12</version>
        <configuration>
            <forkMode>pertest</forkMode>
            <argLine>-enableassertions -Djava.util.logging.config.file=${user.home}/logging.properties -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n ${jvm.extraargs}</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <distributionManagement>
    <repository>
      <id>hyracks-releases</id>
      <url>http://obelix.ics.uci.edu/nexus/content/repositories/hyracks-releases/</url>
    </repository>
    <snapshotRepository>
      <id>hyracks-snapshots</id>
      <url>http://obelix.ics.uci.edu/nexus/content/repositories/hyracks-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>maven-central</id>
      <url>http://repo1.maven.org/maven2/</url>
    </repository>
    <repository>
      <id>hyracks-public</id>
      <url>http://obelix.ics.uci.edu/nexus/content/groups/hyracks-public/</url>
    </repository>
    <repository>
      <id>jboss-public</id>
      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>hyracks-public</id>
      <url>http://obelix.ics.uci.edu/nexus/content/groups/hyracks-public/</url>
      <releases>
        <updatePolicy>always</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <modules>
    <module>pregelix-api</module>
    <module>pregelix-dataflow-std-base</module>
    <module>pregelix-dataflow-std</module>
    <module>pregelix-dataflow</module>
    <module>pregelix-runtime</module>
    <module>pregelix-core</module>
    <module>pregelix-example</module>
    <module>pregelix-benchmark</module>
    <module>pregelix-dist</module>
  </modules>
</project>
