<?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">

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

  <modelVersion>4.0.0</modelVersion>  
  <name>Commons Exec</name>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-exec</artifactId>
  <version>1.0-SNAPSHOT</version>
  <description>A library to reliably execute external processes from within the JVM</description>
  <url>http://commons.apache.org/exec/</url>  
  
  <issueManagement>
      <system>jira</system>
      <url>http://issues.apache.org/jira/browse/EXEC</url>
  </issueManagement>
    
  <dependencies>
   <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  <developers>
    <developer>
      <id>brett</id>
      <name>Brett Porter</name>
      <email>brett AT apache DOT org</email>
      <organization>Apache</organization>
      <timezone>+10</timezone>
    </developer>
    <developer>
      <id>trygvis</id>
      <name>Trygve Laugstøl</name>
      <email>trygvis AT apache DOT org</email>
      <organization>Apache</organization>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <id>sgoeschl</id>
      <name>Siegfried Goeschl</name>
      <email>sgoeschl AT apache DOT org</email>
      <organization>Apache</organization>
      <timezone>+1</timezone>
    </developer>
  </developers>
  
  <contributors>
    <contributor>
      <name>Niklas Gustavsson</name>
      <email>niklas AT protocol7 DOT com</email>
    </contributor>
    <contributor>
      <name>Benjamin Bentmann</name>
      <email>benjamin dot bentmann at udo dot edu</email>
    </contributor>
  </contributors>
  
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/exec/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/exec/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/commons/proper/exec/trunk</url>
  </scm>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/TestUtil.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/assembly/bin.xml</descriptor>
            <descriptor>src/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
    </plugins>
  </build>
    
  <distributionManagement>
    <site>
      <id>website</id>
      <name>Apache Website</name>
      <url>${commons.deployment.protocol}://people.apache.org/www/commons.apache.org/exec/</url>
    </site>
  </distributionManagement>

  <reporting>
    <plugins>
      <!-- generate the changes report from changes.xml -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>1.2</version>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
          <excludeFilterFile>${basedir}/findbugs-exclude-filter.xml</excludeFilterFile>
       </configuration>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <!-- 
      enable this profile if you like to create cobertura report not being part of the official website
    -->
    <profile>
      <id>coverage</id>
      <reporting>
        <plugins>
          <!-- Avoid broken Cobertura 2.1 plugin -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.0</version>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <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>
  </profiles>

  <properties>
    <!-- Compiler source and target JVM (see parent pom) -->
    <maven.compile.source>1.3</maven.compile.source>
    <maven.compile.target>1.3</maven.compile.target>
    <test>*Test</test>
    <commons.componentid>exec</commons.componentid>
    <commons.jira.id>EXEC</commons.jira.id>
    <commons.jira.pid>12310814</commons.jira.pid>
    <commons.release.version>1.0</commons.release.version>
    <!-- The RC version used in the staging repository URL. -->
    <commons.rc.version>RC5</commons.rc.version>
  </properties>

</project>
