<?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.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.1.1</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>The 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.1.1</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.1.1</developerConnection>
    <url>https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.1.1</url>
  </scm>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <httpcore.version>4.1</httpcore.version>
    <commons-logging.version>1.1.1</commons-logging.version>
    <commons-codec.version>1.4</commons-codec.version>
    <ehcache.version>2.2.0</ehcache.version>
    <slf4j.version>1.5.11</slf4j.version>
    <junit.version>4.8.2</junit.version>
    <easymock.version>2.5.2</easymock.version>
    <mockito.version>1.8.5</mockito.version>
    <comparisonVersion>4.1</comparisonVersion>
  </properties>

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

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-notice-plugin</artifactId>
        <groupId>org.apache.httpcomponents</groupId>
        <executions>
          <execution>
            <id>attach-notice-license</id>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <projectTitle>Apache HttpComponents</projectTitle>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestEntries>
              <Specification-Title>HttpComponents ${project.name}</Specification-Title>
              <Specification-Version>${project.version}</Specification-Version>
              <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
              <Implementation-Title>HttpComponents ${project.name}</Implementation-Title>
              <Implementation-Version>${project.version}</Implementation-Version>
              <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
              <url>${project.url}</url>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <archive>
            <!-- Ensure source jars have full manifest entries (note: defaults aren't suitable) -->
            <manifestEntries>
              <Specification-Title>HttpComponents ${project.name}</Specification-Title>
              <Specification-Version>${project.version}</Specification-Version>
              <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
              <Implementation-Title>HttpComponents ${project.name}</Implementation-Title>
              <Implementation-Version>${project.version}</Implementation-Version>
              <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
              <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <links>
            <link>http://download.oracle.com/javase/1.5.0/docs/api/</link>
            <link>http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
      </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/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="${project.artifactId}-${project.version}-bin" />
            </ant>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${project.artifactId}-${project.version}-osgi-bin" />
            </ant>
            <ant antfile="src/main/assembly/build.xml">
              <property name="target" value="${project.build.directory}" />
              <property name="package.name" value="${project.artifactId}-${project.version}-src" />
            </ant>
          </tasks>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.agilejava.docbkx</groupId>
        <artifactId>docbkx-maven-plugin</artifactId>
        <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>${project.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>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <executions>
            <execution>
              <id>copy-resources</id>
              <phase>pre-site</phase>
              <goals>
                <goal>copy-resources</goal>
              </goals>
              <configuration>
                <outputDirectory>${basedir}/target/site/examples</outputDirectory>
                <resources>
                  <resource>
                    <directory>src/examples</directory>
                    <filtering>false</filtering>
                  </resource>
                </resources>
              </configuration>
            </execution>
          </executions>
        </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <configuration>
          <comparisonVersion>${comparisonVersion}</comparisonVersion>
        </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>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <configuration>
          <comparisonVersion>${comparisonVersion}</comparisonVersion>
        </configuration>
      </plugin>

    </plugins>
  </reporting>

</project>
