<?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>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid</artifactId>
    <version>1.0-incubating-M2-SNAPSHOT</version>
    <name>Qpid</name>
    <url>http://cwiki.apache.org/confluence/display/qpid</url>

    <packaging>pom</packaging>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/qpid/trunk</connection>
        <developerConnection>scm:svn:http://svn.apache.org/repos/asf/incubator/qpid/trunk</developerConnection>
        <url>http://svn.apache.org/viewvc/incubator/qpid/trunk/</url>
    </scm>

    <prerequisites>
        <maven>2.0.4</maven>
    </prerequisites>

    <distributionManagement>
        <snapshotRepository>
            <id>apache.snapshots</id>
            <name>Apache SNAPSHOT Repository</name>
            <url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
        </snapshotRepository>
    </distributionManagement>

    <inceptionYear>2006</inceptionYear>
    <mailingLists>
        <mailingList>
            <name>Qpid Developer List</name>
            <subscribe>qpid-dev-subscribe@incubator.apache.org</subscribe>
            <unsubscribe>qpid-dev-unsubscribe@incubator.apache.org</unsubscribe>
            <post>qpid-dev@incubator.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-qpid-dev</archive>
        </mailingList>
        <mailingList>
            <name>Qpid Commits List</name>
            <subscribe>qpid-commits-subscribe@incubator.apache.org</subscribe>
            <unsubscribe>qpid-commits-unsubscribe@incubator.apache.org</unsubscribe>
            <post>qpid-commits@incubator.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/incubator-qpid-commits</archive>
        </mailingList>
    </mailingLists>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    <properties>
        <topDirectoryLocation>.</topDirectoryLocation>

        <surefire.fork.mode>once</surefire.fork.mode>
        <surefire.format>brief</surefire.format>
        <surefire.usefile>false</surefire.usefile>
        <compile.forked>false</compile.forked>
        <java.source.version>1.5</java.source.version>
        <compile.flags>-Xlint:fallthrough,finally</compile.flags>

        <!--Versions for various plugins and features -->
        <antrun.version>1.2-SNAPSHOT</antrun.version>
        <assembly.version>2.1</assembly.version>
        <cobertura.version>2.0</cobertura.version>
        <compiler.version>2.0.1</compiler.version>
        <dependency.plugin.version>1.0</dependency.plugin.version>
        <eclipse.plugin.version>2.2</eclipse.plugin.version>
        <jar.version>2.0</jar.version>
        <javadoc.version>2.0</javadoc.version>
        <junit.version>3.8.1</junit.version>
        <jxr.version>2.0</jxr.version>
        <mprojectinfo.version>2.0</mprojectinfo.version>
        <resources.version>2.2</resources.version>
        <site.version>2.0-beta-5</site.version>
        <surefire-report.version>2.1-SNAPSHOT</surefire-report.version>
        <surefire.version>2.2</surefire.version>

        <amqj.logging.level>warn</amqj.logging.level>

        <eclipse.workspace.dir>${basedir}/${topDirectoryLocation}/../workspace</eclipse.workspace.dir>
        <clover.license.pathname>/set/clover/license/path/here</clover.license.pathname>
    </properties>

    <modules>
        <module>common</module>
        <module>broker</module>
        <module>client</module>
        <module>cluster</module>
        <module>systests</module>
        <module>management/eclipse-plugin</module>
    </modules>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources-filtered</directory>
                <includes>
                    <include>**</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>target/generated/src/main/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </testResource>
            <testResource>
                <directory>src/test/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </testResource>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.xml</exclude>
                </excludes>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <pluginManagement>
            <plugins>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>${antrun.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>ant</groupId>
                            <artifactId>ant-nodeps</artifactId>
                            <version>1.6.5</version>
                        </dependency>

                    </dependencies>

                    <executions>

                         <!-- This Ant task writes the module name, version and the Subversion version information out to a properties file.
                              The svnversion command must be available to run from the command line for this to work. The build will not fail if
                              svnversion cannot be run though.
                              This is done during the 'compile' phase to reflect the version of the currently compiled code and to ensure that
                              these properties are up to date when running from a file system classpath. Consider moving this to, or running a second
                              time, during the 'package' phase to capture the version of any resources added to jar files.
                              This svnversion command is always run in the top directory to accurately reflect the svnversion range accross all modules 
                              at the time of the build.
                              The properties are placed into a file 'qpidversion.properties' in the target/classes directory of any child module that runs 
                              this plugin.
                              The 'qpidversion.properties' file is loaded by the org.apache.qpid.common.QpidProperties class.
                              Be carefull of the possibility that the 'common' module may run this antrun plugin and recieve its own set of 
                              qpidversion.properties and then the client or broker being built against an older version of the common library ending up with
                              the wrong version information. This is unlikely to happen because the client or broker should pick up its own properties
                              from the classpath first. If this happens it will be obvious because the productName property will be 
                              'Qpid Common Utilities'. If this is a problem then push this ant task down into the client and broker poms and remove it
                              from here.
                         -->
                         <execution>
                             <id>version_properties</id>
                             <phase>compile</phase>
                             <configuration>
                             <tasks>

                               <exec executable="svnversion" spawn="false" failifexecutionfails="false" 
                                     dir="${topDirectoryLocation}" outputproperty="svnversion">
                                 <arg line="."/>
                               </exec>

                               <!-- Write the version.properties out. -->
                               <propertyfile file="target/classes/qpidversion.properties">
                                 <entry key="qpid.svnversion" value="${svnversion}"/>
                                 <entry key="qpid.name" value="${project.name}"/>
                                 <entry key="qpid.version" value="${project.version}"/>
                               </propertyfile>

                             </tasks>
                           </configuration>
                           <goals>
                             <goal>run</goal>
                           </goals>
                        </execution>
                   </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${jar.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${resources.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${compiler.version}</version>
                    <configuration>
                        <source>${java.source.version}</source>
                        <target>${java.source.version}</target>
                        <fork>${compile.forked}</fork>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.version}</version>
                    <configuration>
                        <excludes>
                            <exclude>**/*$*</exclude>
                        </excludes>
                        <reportFormat>${surefire.format}</reportFormat>
                        <useFile>${surefire.usefile}</useFile>
                        <forkMode>${surefire.fork.mode}</forkMode>
                        <childDelegation>false</childDelegation>
                        <argLine>-ea</argLine>
                        <systemproperties>
                            <property>
                                <name>amqj.logging.level</name>
                                <value>${amqj.logging.level}</value>
                            </property>
                        </systemproperties>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${site.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>${eclipse.plugin.version}</version>
                    <configuration>
                        <!--downloadSources>true</downloadSources-->
                        <buildcommands>
                            <java.lang.String>org.eclipse.jdt.core.javabuilder</java.lang.String>
                        </buildcommands>
                        <projectnatures>
                            <nature>org.eclipse.jdt.core.javanature</nature>
                        </projectnatures>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-idea-plugin</artifactId>
                    <configuration>
                        <downloadSources>true</downloadSources>
                        <downloadJavadocs>true</downloadJavadocs>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clover-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <licenseLocation>${clover.license.pathname}</licenseLocation>
                        <jdk>${java.source.version}</jdk>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>instrument</goal>
                                <goal>aggregate</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <defaultGoal>install</defaultGoal>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.3</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-configuration</groupId>
                <artifactId>commons-configuration</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.1</version>
                <exclusions>
                    <!-- this seems to have a junit compile dependency -->
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-jms_1.1_spec</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>xml-resolver</groupId>
                <artifactId>xml-resolver</artifactId>
                <version>1.1</version>
            </dependency>
            <dependency>
                <groupId>net.sf.saxon</groupId>
                <artifactId>saxon</artifactId>
                <version>8.7</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.mina</groupId>
                <artifactId>mina-core</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.mina</groupId>
                <artifactId>mina-filter-ssl</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.mina</groupId>
                <artifactId>mina-java5</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>backport-util-concurrent</groupId>
                <artifactId>backport-util-concurrent</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymockclassextension</artifactId>
                <version>2.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-client</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-broker</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-mgmt-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-mgmt-client</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.qpid</groupId>
                <artifactId>qpid-cluster</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>${cobertura.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>${mprojectinfo.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>${surefire-report.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${javadoc.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clover-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>

    <repositories>
        <!-- not picking up any snapshots at the moment
        <repository>
          <id>apache.snapshots</id>
          <name>Apache SNAPSHOT Repository</name>
          <url>http://people.apache.org/repo/m2-snapshot-repository</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
        -->
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache SNAPSHOT Repository</name>
            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <profiles>
        <profile>
            <id>fastinstall</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
        <profile>
            <id>nochecks</id>
        </profile>

        <profile>
            <id>setup.eclipse</id>
            <build>
                <defaultGoal>process-test-sources</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>setup.eclipse.project</id>
                                <phase>process-test-sources</phase>
                                <goals>
                                    <goal>eclipse</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>setup.eclipse.workspace</id>
                                <phase>process-test-sources</phase>
                                <goals>
                                    <goal>add-maven-repo</goal>
                                </goals>
                                <configuration>
                                    <workspace>${eclipse.workspace.dir}</workspace>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
