<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
  ~ 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>
  <packaging>pom</packaging>
  <parent>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-parent</artifactId>
    <version>33</version>
  </parent>
  <artifactId>commons-proxy2-parent</artifactId>
  <version>2.0-SNAPSHOT</version>
  <name>Apache Commons Proxy</name>
  <description>Java library for dynamic proxying</description>
  <url>http://commons.apache.org/proxy/</url>
  <inceptionYear>2005</inceptionYear>

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

  <properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
    <commons.componentid>proxy</commons.componentid>
    <commons.release.version>1.0</commons.release.version>
    <commons.release.name>commons-proxy-${commons.release.version}</commons.release.name>
    <commons.release.desc>(requires Java ${maven.compiler.target} or later)</commons.release.desc>
    <commons.rc.version>RC1</commons.rc.version>
    <commons.jira.id>PROXY</commons.jira.id>
    <commons.jira.pid>12310731</commons.jira.pid>
    <commons.site.path>commons-proxy</commons.site.path>
    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${commons.site.path}</commons.scmPubUrl>

    <asm.version>5.0.1</asm.version>
    <ant.version>1.9.3</ant.version>
    <checkstyle.version>2.11</checkstyle.version>
    <!-- Unfortunately reporting sections ignore pluginManagement settings, so define the versions here -->
    <pmd.version>3.0.1</pmd.version>
    <findbugs.version>2.5.3</findbugs.version>
  </properties>

  <developers>
    <developer>
      <id>jcarman</id>
      <name>James Carman</name>
      <email>james@carmanconsulting.com</email>
      <organization>Carman Consulting, Inc.</organization>
      <roles>
        <role>admin</role>
        <role>designer</role>
        <role>developer</role>
      </roles>
      <url>http://www.carmanconsulting.com/</url>
      <timezone>-5</timezone>
    </developer>
    <developer>
      <id>knut</id>
      <name>Knut Wannheden</name>
      <email>knut@apache.org</email>
      <roles>
        <role>designer</role>
        <role>developer</role>
      </roles>
      <timezone>+1</timezone>
    </developer>
    <developer>
      <name>J&#246;rg Hohwiller</name>
      <email>hohwille@users.sourceforge.net</email>
      <organization/>
      <roles>
        <role>mavenizer</role>
        <role>developer</role>
      </roles>
      <url></url>
    </developer>
    <developer>
      <id>mbenson</id>
      <name>Matt Benson</name>
      <email>mbenson@apache.org</email>
      <roles>
        <role>developer</role>
        <role>release manager</role>
      </roles>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Howard M. Lewis Ship</name>
      <email>hlship@apache.org</email>
      <organization/>
      <roles>
        <role>advisor</role>
      </roles>
      <url>http://www.howardlewisship.com/</url>
    </contributor>
    <contributor>
      <name>J&#246;rg Schaible</name>
      <email>joerg.schaible@gmx.de</email>
      <organization/>
      <roles>
        <role>advisor</role>
      </roles>
    </contributor>
    <contributor>
      <name>Mark Struberg</name>
    </contributor>
    <contributor>
      <name>Romain Manni-Bucau</name>
    </contributor>
  </contributors>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/proxy/trunk/</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/proxy/trunk/</developerConnection>
    <url>http://svn.apache.org/repos/asf/commons/proper/proxy/trunk/</url>
  </scm>

  <distributionManagement>
    <site>
      <id>commons.site</id>
      <name>Apache Commons site SVN</name>
      <url>scm:svn:${commons.scmPubUrl}</url>
    </site>
  </distributionManagement>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-core</artifactId>
        <classifier>sources</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-core</artifactId>
        <classifier>javadoc</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-asm4</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-asm4</artifactId>
        <classifier>sources</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-asm4</artifactId>
        <classifier>javadoc</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-cglib</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-cglib</artifactId>
        <classifier>sources</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-cglib</artifactId>
        <classifier>javadoc</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-javassist</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-javassist</artifactId>
        <classifier>sources</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-javassist</artifactId>
        <classifier>javadoc</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-jdk</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-jdk</artifactId>
        <classifier>sources</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-jdk</artifactId>
        <classifier>javadoc</classifier>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>commons-proxy2-test</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.1</version>
      </dependency>
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>3.1</version>
      </dependency>
      <dependency>
        <groupId>jboss</groupId>
        <artifactId>javassist</artifactId>
        <version>3.7.ga</version>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.18.1-GA</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>${asm.version}</version>
      </dependency>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm-commons</artifactId>
        <version>${asm.version}</version>
      </dependency>
      <dependency>
        <groupId>jmock</groupId>
        <artifactId>jmock</artifactId>
        <version>1.2.0</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>${checkstyle.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>${pmd.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.8</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>${findbugs.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-notices</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target xmlns:if="ant:if" xmlns:unless="ant:unless">
                <presetdef name="truth">
                  <condition value="true" else="false" />
                </presetdef>

                <macrodef name="seek">
                  <attribute name="name" />
                  <attribute name="addto" />
                  <sequential>
                    <union id="@{name}-ws" />
                    <step dir="${user.dir}" name="@{name}" addto="@{addto}" ws="@{name}-ws" />
                  </sequential>
                </macrodef>

                <macrodef name="step">
                  <attribute name="name" />
                  <attribute name="dir" />
                  <attribute name="addto" />
                  <attribute name="ws" />
                  <sequential>
                    <local name="seenDir" />
                    <truth property="seenDir">
                      <resourcecount when="gt" count="0">
                        <intersect id="intersection">
                          <resources refid="@{ws}" />
                          <file name="@{dir}" />
                        </intersect>
                      </resourcecount>
                    </truth>
                    <sequential unless:true="${seenDir}">
                      <augment id="@{ws}">
                        <file file="@{dir}" />
                      </augment>
                      <local name="exists" />
                      <truth property="exists">
                        <available file="@{dir}/@{name}" />
                      </truth>

                      <sequential if:true="${exists}">
                        <augment id="@{addto}">
                          <file file="@{dir}/@{name}" />
                        </augment>
                      </sequential>
                      <sequential unless:true="${exists}">
                        <local name="parent.dir" />
                        <dirname property="parent.dir" file="@{dir}" />
                        <step dir="${parent.dir}" name="@{name}" addto="@{addto}" ws="@{ws}" />
                      </sequential>
                    </sequential>
                  </sequential>
                </macrodef>

                <truth property="pom-only">
                  <equals arg1="${project.packaging}" arg2="pom" />
                </truth>
                <sequential unless:true="${pom-only}">
                  <union id="notices" />
                  <seek name="LICENSE.txt" addto="notices" />
                  <seek name="NOTICE.txt" addto="notices" />

                  <mkdir dir="${project.build.directory}/generated-resources/notices/META-INF" />
                  <copy verbose="true" todir="${project.build.directory}/generated-resources/notices/META-INF">
                    <resources refid="notices" />
                  </copy>

                  <mkdir dir="${project.build.directory}/generated-test-resources/notices/META-INF" />
                  <copy verbose="true" todir="${project.build.directory}/generated-test-resources/notices/META-INF">
                    <resources refid="notices" />
                  </copy>

                  <mkdir dir="${project.build.directory}/apidocs/META-INF" />
                  <copy verbose="true" todir="${project.build.directory}/apidocs/META-INF">
                    <resources refid="notices" />
                  </copy>
                </sequential>
              </target>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>${ant.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checkstyle.version}</version>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>commons-proxy2-build-tools</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        <configuration>
          <configLocation>org/apache/commons/proxy2/checkstyle.xml</configLocation>
          <includes>**/*.java</includes>
        </configuration>
      </plugin>
      <!-- Unfortunately the much simpler
           <prerequisites><maven>3.0</maven></prerequisites>  
           is not inherited so we have to use the enforcer plugin
      -->
      <plugin>
        <inherited>true</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-maven-3</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <!-- Problem with Maven 3.2.x filed as
                     http://jira.codehaus.org/browse/MNG-5601
                 -->
                <requireMavenVersion>
                  <version>[3.0.0,3.2.0)</version>
                </requireMavenVersion>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-test-jar</id>
            <phase>package</phase>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <skipIfEmpty>true</skipIfEmpty>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <id>create-javadoc-jar</id>
            <phase>package</phase>
            <goals>
              <goal>javadoc</goal>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <source>${maven.compiler.source}</source>
          <linksource>true</linksource>
          <links>
            <link>http://docs.oracle.com/javase/6/docs/api/</link>
            <link>http://www.csg.is.titech.ac.jp/~chiba/javassist/html</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>commons-proxy2-build-tools</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        <configuration>
          <rulesets>
            <!--ruleset>/org/apache/commons/proxy2/pmd.xml</ruleset-->
          </rulesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <autoVersionSubmodules>true</autoVersionSubmodules>
          <tag>${commons.release.version}_${commons.rc.version}</tag>
          <preparationGoals>changes:changes-check</preparationGoals>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <content>${project.build.directory}/staging</content>
          <ignorePathsToDelete>
            <ignorePathToDelete>javadocs</ignorePathToDelete>
          </ignorePathsToDelete>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-module-markdown</artifactId>
            <version>1.3</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
          <execution>
            <id>attach-test-sources</id>
            <goals>
              <goal>test-jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-source-notices</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>add-resource</goal>
            </goals>
            <configuration>
              <resources>
                <resource>
                  <directory>${project.build.directory}/generated-resources/notices</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
          <execution>
            <id>add-test-notices</id>
            <phase>generate-test-resources</phase>
            <goals>
              <goal>add-test-resource</goal>
            </goals>
            <configuration>
              <resources>
                <resource>
                  <directory>${project.build.directory}/generated-test-resources/notices</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>commons-proxy2-build-tools</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
        <configuration>
          <excludeFilterFile>/org/apache/commons/proxy2/findbugs-exclude-filter.xml</excludeFilterFile>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <source>${maven.compiler.source}</source>
          <linksource>true</linksource>
          <links>
            <link>http://docs.oracle.com/javase/6/docs/api/</link>
            <link>http://www.csg.is.titech.ac.jp/~chiba/javassist/html</link>
          </links>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <configuration>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <inherited>false</inherited>
        <configuration>
          <excludeSubProjects>false</excludeSubProjects>
          <excludes>
            <exclude>**/target/**</exclude>
            <exclude>**/.*</exclude>
            <exclude>**/.*/**</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <inherited>false</inherited>
            <executions>
              <execution>
                <goals>
                  <goal>single</goal>
                </goals>
                <!-- disable assembly:single from commons-parent
                     release profile; multimodule assembly handled
                     by dist module -->
                <phase />
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>create-source-jar</id>
                <!-- suppress execution specified by parent profile -->
                <phase />
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>site</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <aggregate>true</aggregate>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <modules>
    <module>build-tools</module>
    <module>core</module>
    <module>jdk</module>
    <module>asm4</module>
    <module>javassist</module>
    <module>cglib</module>
    <module>test</module>
    <module>dist</module>
  </modules>
</project>
