<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-parent</artifactId>
    <version>54</version>
  </parent>

  <artifactId>commons-graph</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Apache Commons Graph (Sandbox)</name>
  <description>
    The Apache Commons Graph package is a toolkit for managing graphs and graph based data structures.
  </description>
  <url>http://commons.apache.org/sandbox/graph/</url>
  <inceptionYear>2001</inceptionYear>

  <developers>
    <developer>
      <name>Claudio Squarcella</name>
      <id>cs</id>
      <email>cs AT apache DOT org</email>
    </developer>
    <developer>
      <name>David Dixon-Peugh</name>
      <id>dpeugh</id>
      <email>dpeugh AT mindspring DOT com</email>
    </developer>
    <developer>
      <name>James Carman</name>
      <id>jcarman</id>
      <email>jcarman AT apache DOT org</email>
    </developer>
    <developer>
      <name>Jason van Zyl</name>
      <id>jvanzyl</id>
      <email>jason AT zenplex DOT com</email>
    </developer>
    <developer>
      <name>Marco Speranza</name>
      <id>marcosperanza</id>
      <email>marcosperanza AT apache DOT org</email>
    </developer>
    <developer>
      <name>Oliver Heger</name>
      <id>oheger</id>
      <email>oheger AT apache DOT org</email>
    </developer>
    <developer>
      <name>Simone Tripodi</name>
      <id>simonetripodi</id>
      <email>simonetripodi AT apache DOT org</email>
    </developer>
    <developer>
      <name>Thomas Neidhart</name>
      <id>tn</id>
      <email>tn AT apache DOT org</email>
    </developer>
    <developer>
      <name>Tommaso Teofili</name>
      <id>tommaso</id>
      <email>tommaso AT apache DOT org</email>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Matteo Moci</name>
      <email>mox601 AT gmail DOT com</email>
    </contributor>
    <contributor>
      <name>Matthew Pocock</name>
      <email>turingatemyhamster AT gmail DOT com</email>
    </contributor>
    <contributor>
      <name>Rodion Efremov</name>
      <email>rodion dot efremov at cs dot helsinki dot fi</email>
    </contributor>
  </contributors>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/sandbox/graph/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/sandbox/graph/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/sandbox/graph/trunk</url>
  </scm>
  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/SANDBOX</url>
  </issueManagement>
  <distributionManagement>
    <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->
    <site>
      <id>people.apache.org</id>
      <name>Apache Commons Site</name>
      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/sandbox/graph</url>
    </site>
  </distributionManagement>

  <properties>

    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <commons.componentid>graph</commons.componentid>
    <commons.jira.componentid>12314503</commons.jira.componentid>

    <commons.module.name>org.apache.commons.graph</commons.module.name>

    <commons.release.version>1.0-beta1</commons.release.version>
    <commons.release.desc>(Java 8+)</commons.release.desc>

    <commons.jira.id>GRAPH</commons.jira.id>
    <commons.jira.pid>12314503</commons.jira.pid>

    <commons.site.path>graph</commons.site.path>
    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-graph</commons.scmPubUrl>
    <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>

    <checkstyle.plugin.version>3.1.0</checkstyle.plugin.version>
    <checkstyle.version>8.27</checkstyle.version>

    <spotbugs.plugin.version>4.0.0</spotbugs.plugin.version>

    <commons.jacoco.version>0.8.4</commons.jacoco.version>

    <commons.javadoc.version>3.1.1</commons.javadoc.version>

    <!-- generate report even if there are binary incompatible changes -->
    <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
    <commons.japicmp.version>0.14.1</commons.japicmp.version>
    <japicmp.skip>false</japicmp.skip>

  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <defaultGoal>clean verify apache-rat:check clirr:check</defaultGoal>
    <resources>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
          <include>LICENSE.txt</include>
        </includes>
      </resource>
    </resources>

    <pluginManagement>
      <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[1.6,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <versionRange>[2.3.5,)</versionRange>
                    <goals>
                      <goal>manifest</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/bin.xml</descriptor>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>jarjar-maven-plugin</artifactId>
        <version>1.5</version>
        <configuration>
          <input>{classes}</input>
          <output>${project.build.directory}/classes</output>
          <overwrite>true</overwrite>
          <skipManifest>true</skipManifest>
          <excludes>
            <exclude>*:*</exclude>
          </excludes>
          <rules>
            <rule>
              <pattern>org.apache.commons.graph.**.Default*</pattern>
              <result>org.apache.commons.graph.@1.$@2</result>
            </rule>
            <rule>
              <pattern>org.apache.commons.graph.utils.*</pattern>
              <result>org.apache.commons.graph.utils.$@1</result>
            </rule>
            <keep>
              <pattern>org.apache.commons.graph.**</pattern>
            </keep>
          </rules>
        </configuration>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>jarjar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.9.1</version>
        <configuration>
          <configLocation>config/maven_checks.xml</configLocation>
          <headerLocation>config/maven-header.txt</headerLocation>
          <suppressionsLocation>${basedir}/checkstyle-suppressions.xml</suppressionsLocation>
          <suppressionsFileExpression>${basedir}/checkstyle-suppressions.xml</suppressionsFileExpression>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <targetJdk>${maven.compiler.target}</targetJdk>
        </configuration>
        <!--Use default rules-->
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>2.4</version>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>rc</id>
      <distributionManagement>
        <!-- Cannot define in parent ATM, see COMMONSSITE-26 -->
        <site>
          <id>apache.website</id>
          <name>Apache Commons Release Candidate Staging Site</name>
          <url>${commons.deployment.protocol}://people.apache.org/www/people.apache.org/builds/commons/${commons.componentid}/${commons.release.version}/${commons.rc.version}/site</url>
        </site>
      </distributionManagement>
    </profile>

    <profile>
      <id>benchmarks</id>
      <activation>
        <property>
          <name>skipBenchmarks</name>
          <value>!true</value>
        </property>
      </activation>

      <dependencies>
        <dependency>
          <groupId>com.carrotsearch</groupId>
          <artifactId>junit-benchmarks</artifactId>
          <classifier>jdk15</classifier>
          <version>0.3.0</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <version>1.3.158</version>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
              <execution>
                <id>add-test-source</id>
                <phase>generate-test-sources</phase>
                <goals>
                  <goal>add-test-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${basedir}/src/benchmarks/java</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <systemPropertyVariables>
                <jub.consumers>CONSOLE,XML,H2</jub.consumers>
                <jub.db.file>${project.build.directory}/benchmarks/database</jub.db.file>
                <jub.xml.file>${project.build.directory}/benchmarks.xml</jub.xml.file>
                <jub.charts.dir>${project.build.directory}/site</jub.charts.dir>
              </systemPropertyVariables>
              <argLine>-Xmx512m -Xms512m</argLine>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
