<?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.
   ====================================================================

   This software consists of voluntary contributions made by many
   individuals on behalf of the Apache Software Foundation.  For more
   information on the Apache Software Foundation, please see
   <http://www.apache.org />.
 -->
<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>
    <artifactId>project</artifactId>
    <groupId>org.apache.httpcomponents</groupId>
    <version>4.1</version>
    <relativePath>../project/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpcomponents-client</artifactId>
  <name>HttpComponents Client</name>
  <version>4.0.2</version>
  <description>Components to build client side HTTP services</description>
  <url>http://hc.apache.org/httpcomponents-client</url>
  <inceptionYear>1999</inceptionYear>
  <packaging>pom</packaging>

  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org/</url>
  </organization>

  <licenses>
    <license>
      <name>Apache License</name>
      <url>LICENSE.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

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

  <scm>
    <connection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</developerConnection>
    <url>https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.2</url>
  </scm>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <httpcore.version>4.0.1</httpcore.version>
    <commons-logging.version>1.1.1</commons-logging.version>
    <commons-codec.version>1.3</commons-codec.version>
    <mime4j.version>0.6</mime4j.version>
    <junit.version>3.8.2</junit.version>
  </properties>

  <modules>
    <module>httpclient</module>
    <module>httpmime</module>
    <module>httpclient-osgi</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
            <link>http://hc.apache.org/httpcomponents-core/httpcore/apidocs/</link>
            <link>http://james.apache.org/mime4j/apidocs/</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <tagBase>https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/</tagBase>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/bin.xml</descriptor>
            <descriptor>src/main/assembly/osgi-bin.xml</descriptor>
            <descriptor>src/main/assembly/bin-with-deps.xml</descriptor>
            <descriptor>src/main/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <inherited>false</inherited>
        <configuration>
          <tasks>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${pom.artifactId}-${pom.version}-bin" />
            </ant>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${pom.artifactId}-${pom.version}-bin-with-dependencies" />
            </ant>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${pom.artifactId}-${pom.version}-osgi-bin" />
            </ant>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${pom.artifactId}-${pom.version}-src" />
            </ant>
          </tasks>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>maven-clover2-plugin</artifactId>
        <configuration>
          <flushPolicy>threaded</flushPolicy>
          <flushInterval>100</flushInterval>
          <targetPercentage>50%</targetPercentage>
        </configuration>
        <executions>
          <execution>
            <id>site</id>
            <phase>pre-site</phase>
            <goals>
              <goal>instrument</goal>
              <goal>aggregate</goal>
              <goal>save-history</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.agilejava.docbkx</groupId>
        <artifactId>docbkx-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
                <goal>generate-html</goal>
                <goal>generate-pdf</goal>
            </goals>
            <phase>pre-site</phase>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.docbook</groupId>
            <artifactId>docbook-xml</artifactId>
            <version>4.4</version>
            <scope>runtime</scope>
          </dependency>
        </dependencies>
        <configuration>
          <includes>index.xml</includes>
          <chunkedOutput>true</chunkedOutput>
          <xincludeSupported>true</xincludeSupported>
          <foCustomization>src/docbkx/resources/xsl/fopdf.xsl</foCustomization>
          <htmlCustomization>src/docbkx/resources/xsl/html_chunk.xsl</htmlCustomization>
          <htmlStylesheet>css/hc-tutorial.css</htmlStylesheet>
          <entities>
            <entity>
              <name>version</name>
              <value>${pom.version}</value>
            </entity>
          </entities>
          <postProcess>
            <copy todir="target/site/tutorial">
              <fileset dir="target/docbkx">
                <include name="**/*.html" />
                <include name="**/*.pdf" />
              </fileset>
            </copy>
            <copy todir="target/site/tutorial/html">
              <fileset dir="src/docbkx/resources">
                <include name="**/*.css" />
                <include name="**/*.png" />
                <include name="**/*.gif" />
                <include name="**/*.jpg" />
              </fileset>
            </copy>
            <move file="target/site/tutorial/pdf/index.pdf" tofile="target/site/tutorial/pdf/httpclient-tutorial.pdf" failonerror="false" />
          </postProcess>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <reporting>
    <plugins>

       <plugin>
         <artifactId>maven-project-info-reports-plugin</artifactId>
         <reportSets>
           <reportSet>
             <reports>
               <report>dependencies</report>
               <report>project-team</report>
               <report>mailing-list</report>
               <report>issue-tracking</report>
               <report>scm</report>
             </reports>
           </reportSet>
         </reportSets>
      </plugin>

    </plugins>
  </reporting>

</project>
