<?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</groupId>
        <artifactId>apache</artifactId>
        <version>8</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.sandesha2</groupId>
    <artifactId>sandesha2-parent</artifactId>
    <packaging>pom</packaging>
    <description>
        Sandesha2 is an implementation of WS-ReliableMessaging specifications for Apache Axis2. By using Sandesha2 you
        can add reliable messaging capability to the Web services you have hosted in Axis2. You can also use Sandesha2
        with Axis2 client to interact with already hosted web services in a reliable manner. Please see Sandesha2 user
        guide for more information on using Sandesha2. Read Sandesha2 Architecture guide to see how Sandesha2 works
        internally.
    </description>
    <version>1.7.0-SNAPSHOT</version>
    <name>Apache Sandesha</name>
    <url>http://axis.apache.org/axis2/java/sandesha/</url>

    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.apache.org/jira/browse/SANDESHA2</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>Axis2 Developer List</name>
            <subscribe>java-dev-subscribe@axis.apache.org</subscribe>
            <unsubscribe>java-dev-unsubscribe@axis.apache.org</unsubscribe>
            <post>java-dev@axis.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/axis-java-dev/</archive>
            <otherArchives>
                <otherArchive>http://markmail.org/search/list:org.apache.ws.axis-dev</otherArchive>
            </otherArchives>
        </mailingList>
        <mailingList>
            <name>Axis2 User List</name>
            <subscribe>java-user-subscribe@axis.apache.org</subscribe>
            <unsubscribe>java-user-unsubscribe@axis.apache.org</unsubscribe>
            <post>java-user@axis.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/axis-java-user/</archive>
            <otherArchives>
                <otherArchive>http://markmail.org/search/list:org.apache.ws.axis-user</otherArchive>
            </otherArchives>
        </mailingList>
    </mailingLists>
    <inceptionYear>2005</inceptionYear>

    <developers>
        <developer>
            <name>Chamikara Jayalath</name>
            <id>chamikara</id>
            <email>chamikaramj AT gmail.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Davanum Srinivas</name>
            <id>dims</id>
            <email>dims AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Jaliya Ekanayake</name>
            <id>jaliya</id>
            <email>jaliya AT opensource.lk</email>
            <organization>Indiana University, USA</organization>
            <url>http://www.apache.org/~jaliya</url>
        </developer>
        <developer>
            <name>Sanjiva Weerawarana</name>
            <id>sanjiva</id>
            <email>sanjiva AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Sanka Samaranayaka</name>
            <id>sanka</id>
            <email>ssanka AT gmail.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Andrew K Gatford</name>
            <id>gatfora</id>
            <email>GATFORA AT uk.ibm.com</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <name>Thomas McKiernan</name>
            <id>mckierna</id>
            <email>MCKIERNA AT uk.ibm.com</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <name>Matt Lovett</name>
            <id>mlovett</id>
            <email>MLOVETT AT uk.ibm.com</email>
            <organization>IBM</organization>
        </developer>
    </developers>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.11</version>
            </plugin>
            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>site-javadoc</id>
                        <phase>site</phase>
                        <goals>
                            <goal>aggregate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>0.7</version>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <excludes>
                                <exclude>dependency-reduced-pom.xml</exclude>
                            </excludes>
                        </configuration> 
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <!-- The default value "clean verify" is not appropriate. If the install
                             phase is not executed, then the current build will pick up artifacts
                             from a previous build. -->
                        <preparationGoals>clean install</preparationGoals>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-5</version>
                    <configuration>
                        <!-- Workaround for MASSEMBLY-422 / MASSEMBLY-449 -->
                        <archiverConfig>
                            <fileMode>420</fileMode> <!-- 420(dec) = 644(oct) -->
                            <directoryMode>493</directoryMode> <!-- 493(dec) = 755(oct) -->
                            <defaultDirectoryMode>493</defaultDirectoryMode>
                        </archiverConfig>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <!-- Override the execution defined in org.apache:apache
                                     so that the source-release assembly is not built.
                                     We define our own source distribution in modules/distribution. -->
                                <id>source-release-assembly</id>
                                <configuration>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>single</goal>
                                    </goals>
                                    <skipAssembly>true</skipAssembly>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>issue-tracking</report>
                            <report>mailing-list</report>
                            <report>project-team</report>
                            <report>scm</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>
    
    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/axis/axis2/java/sandesha/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/sandesha/trunk</developerConnection>
        <url>http://svn.apache.org/viewvc/axis/axis2/java/sandesha/trunk</url>
    </scm>

    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Snapshot Repository</name>
            <url>http://repository.apache.org/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>${commons.logging.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.0-beta1</version>
            <scope>test</scope>
        </dependency>
        
        <!-- Axis2 -->
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>addressing</artifactId>
            <type>mar</type>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-mtompolicy</artifactId>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.rampart</groupId>
                <artifactId>rampart</artifactId>
                <version>${rampart.version}</version>
                <type>mar</type>
            </dependency>
            <dependency>
                <groupId>org.apache.rampart</groupId>
                <artifactId>rampart-core</artifactId>
                <version>${rampart.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rampart</groupId>
                <artifactId>rampart-trust</artifactId>
                <version>${rampart.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rampart</groupId>
                <artifactId>rampart-policy</artifactId>
                <version>${rampart.version}</version>
            </dependency>
            <!-- This ensures that we always use artifacts from the expected Axiom and Axis2 versions,
                 even for transitive dependencies of Rampart -->
            <dependency>
                <groupId>org.apache.ws.commons.axiom</groupId>
                <artifactId>axiom-api</artifactId>
                <version>${axiom.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ws.commons.axiom</groupId>
                <artifactId>axiom-impl</artifactId>
                <version>${axiom.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.ws.commons.axiom</groupId>
                <artifactId>axiom-dom</artifactId>
                <version>${axiom.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-kernel</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-codegen</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-adb</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-adb-codegen</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>addressing</artifactId>
                <version>${axis2.version}</version>
                <type>mar</type>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-mtompolicy</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>mex</artifactId>
                <classifier>impl</classifier>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-http</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-local</artifactId>
                <version>${axis2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-testutils</artifactId>
                <version>${axis2.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <modules>
        <module>modules/resource-bundle</module> <!-- Must be first in the list! -->
        <module>modules/core</module>
        <module>modules/mar</module>
        <module>modules/client</module>
        <module>modules/policy</module>
        <module>modules/rampart-integration</module>
        <module>modules/tests</module>
        <module>modules/samples</module>
        <module>modules/interop</module>
        <module>modules/persistence</module>
        <module>modules/distribution</module>
    </modules>

    <properties>
        <axis2.version>1.7.0-SNAPSHOT</axis2.version>
        <rampart.version>1.7.0-SNAPSHOT</rampart.version>
        <axiom.version>1.2.14-SNAPSHOT</axiom.version>
        <commons.logging.version>1.1.1</commons.logging.version>
        <junit.version>3.8.2</junit.version>        
        <log4j.version>1.2.15</log4j.version>
        
        <!-- This variable is used in some Xdocs and is substituted using Velocity. Note that
             we can't use the project.version variable directly because of the dot. See
             http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html -->
        <sandesha2_version>${project.version}</sandesha2_version>
    </properties>
</project>
