<?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>33</version>
  </parent>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-functor-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Commons Functor</name>
  <inceptionYear>2003</inceptionYear>
  <description>
    A "functor" is an entity that serves the role of a function but can be operated upon like an object.
    The Apache Commons Functor library defines common functor and functor-related interfaces,
    implementations, and utilities.
  </description>

  <url>http://commons.apache.org/proper/commons-functor/</url>

  <issueManagement>
    <system>jira</system>
    <url>http://issues.apache.org/jira/browse/FUNCTOR</url>
  </issueManagement>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-functor</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-functor</developerConnection>
    <url>https://gitbox.apache.org/repos/asf/commons-functor</url>
  </scm>

  <developers>
    <developer>
      <name>Bruno P. Kinoshita</name>
      <email>kinow AT apache DOT org</email>
    </developer>
    <developer>
      <name>Dennis Lundberg</name>
      <id>dennisl</id>
      <email>dennisl AT apache DOT org</email>
    </developer>
    <developer>
      <name>Matt Benson</name>
      <id>mbenson</id>
      <email>mbenson AT apache DOT org</email>
    </developer>
    <developer>
      <name>Niall Pemberton</name>
      <id>niallp</id>
      <email>niallp AT apache DOT org</email>
    </developer>
    <developer>
      <name>Rodney Waldhoff</name>
      <id>rwaldhoff</id>
      <email>rwaldhoff AT apache DOT org</email>
    </developer>
    <developer>
      <name>Simone Tripodi</name>
      <id>simonetripodi</id>
      <email>simonetripodi AT apache DOT org</email>
    </developer>
  </developers>

  <contributors>
   <contributor>
     <name>Jason Horman</name>
     <email>jason AT jhorman DOT org</email>
   </contributor>
   <contributor>
     <name>Herve Quiroz</name>
     <email>herve DOT quiroz AT esil DOT univ DASH mrs DOT fr</email>
   </contributor>
   <contributor>
     <name>Liviu Tudor</name>
     <email>me AT liviutudor DOT com</email>
   </contributor>
  </contributors>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-functor-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <!-- if upgrading, be sure to check shaded jar relocations! -->
        <version>3.1</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    <commons.componentid>functor</commons.componentid>
    <commons.module.name>org.apache.commons.functor</commons.module.name>
    <commons.release.version>1.0</commons.release.version>
    <commons.rc.version>RC1</commons.rc.version>
    <commons.jira.id>FUNCTOR</commons.jira.id>
    <commons.jira.pid>12312520</commons.jira.pid>

    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-functor</commons.scmPubUrl>
  </properties>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
            <descriptor>${basedir}/src/main/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
          <id>attach-sources</id>
          <goals>
            <goal>jar</goal>
          </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>commons-functor-build-tools</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <content>${project.reporting.outputDirectory}</content>
          <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl>
          <checkoutDirectory>site-content</checkoutDirectory>
          <tryUpdate>true</tryUpdate>
        </configuration>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin -->
            <goals>
              <goal>publish-scm</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

    <!--
     | Maven3 doesn't handle ssh/scp by default
     | let's take in consideration to add it in the parent pom
    -->
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>1.0</version>
      </extension>
    </extensions>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <targetJdk>1.5</targetJdk>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.8</version>
        <inherited>false</inherited>
        <configuration>
          <issueLinkTemplate>%URL%/../%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <configLocation>org/apache/commons/functor/checkstyle.xml</configLocation>
          <headerLocation>org/apache/commons/functor/license-header.txt</headerLocation>
          <suppressionsLocation>org/apache/commons/functor/checkstyle-suppressions.xml</suppressionsLocation>
          <suppressionsFileExpression>org/apache/commons/functor/checkstyle-suppressions.xml</suppressionsFileExpression>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.4</version>
      </plugin>
    </plugins>
  </reporting>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <name>Apache Commons Site</name>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-functor/</url>
    </site>
  </distributionManagement>

  <modules>
    <module>build-tools</module>
    <module>api</module>
    <module>core</module>
  </modules>
</project>
