<?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>
    <groupId>org.apache.rampart</groupId>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>rampart-project</artifactId>
    <packaging>pom</packaging>
    <description> WS-Security, WS-Trust and WS-SecureConversation implementaion for Apache Axis2 </description>
    <version>1.5.2</version>
    <name>Apache Rampart</name>
    <url>http://ws.apache.org/rampart</url>

    <licenses>
        <license>
            <name>Apache License Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
    </licenses>

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

    <issueManagement>
        <system>JIRA</system>
        <url>http://issues.apache.org/jira/browse/RAMPART</url>
    </issueManagement>
    
    <mailingLists>
        <mailingList>
            <name>Rampart Developers</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.rampart-dev</otherArchive>
            </otherArchives>
        </mailingList>
    </mailingLists>

    <inceptionYear>2005</inceptionYear>

    <developers>
        <developer>
            <name>Afkham Azeez</name>
            <id>azeez</id>
            <email>azeez AT wso2.com</email>
            <organization>WSO2</organization>
        </developer>
        <developer>
            <name>Ruchith Fernando</name>
            <id>ruchith</id>
            <email>ruchithf AT apache.org</email>
            <organization>Purdue University</organization>
        </developer>
        <developer>
            <name>Sanka Samaranayake</name>
            <id>sanka</id>
            <organization>WSO2</organization>
            <email>sanka AT wso2.com</email>
        </developer>
        <developer>
            <name>Davanum Srinivas</name>
            <id>dims</id>
            <email>dims AT apache.org</email>
            <organization>IBM</organization>
        </developer>
        <developer>
            <name>Nandana Mihindukulasooriya</name>
            <id>nandana</id>
            <email>nandana AT apache.org</email>
            <organization />
        </developer>
    </developers>

    <scm>
        <connection>
            scm:svn:http://svn.apache.org/repos/asf/axis/axis2/java/rampart/tags/v1.5.2
        </connection>
        <developerConnection>
            scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/rampart/tags/v1.5.2
        </developerConnection>
        <url>http://svn.apache.org/viewvc/axis/axis2/java/rampart/tags/v1.5.2</url>
    </scm>


    <repositories>
	
        <repository>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
            <id>open-saml</id>
            <name>OpenSAML</name>
            <url>http://shibboleth.internet2.edu/downloads/maven2/</url>
        </repository>

    </repositories>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <configuration>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <preparationGoals>clean install</preparationGoals>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.axis2</groupId>
                    <artifactId>axis2-mar-maven-plugin</artifactId>
                    <version>1.5.4</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <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>
                <artifactId>maven-site-plugin</artifactId>
                <version>2.0-beta-5</version>
                <inherited>false</inherited>
            </plugin>
        </plugins>
    </build>


    <dependencies>

        <!-- Axis2 and Axiom Dependencies -->
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>${axis2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>mex</artifactId>
            <version>${axis2.version}</version>
            <classifier>impl</classifier>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-mtompolicy</artifactId>
            <version>${axis2.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>addressing</artifactId>
            <type>mar</type>
            <version>${axis2.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-dom</artifactId>
        </dependency>

        <!-- Other Rampart Dependencies -->
        <dependency>
            <groupId>org.apache.ws.security</groupId>
            <artifactId>wss4j</artifactId>
            <version>${wss4j.version}</version>
            <exclusions>
                <!-- We exclude xalan:xalan as a transitive dependency, but include
                     org.apache.xalan:xalan as a direct dependency. This avoids
                     conflicts with the dependencies of org.opensaml:opensaml
                     (which uses org.apache.xalan:xalan). -->
                <exclusion>
                    <artifactId>xalan</artifactId>
                    <groupId>xalan</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.xalan</groupId>
            <artifactId>xalan</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.opensaml</groupId>
            <artifactId>opensaml1</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.opensaml</groupId>
            <artifactId>opensaml</artifactId>
            <version>2.2.3</version>
            <exclusions>
                <!-- Don't allow OpenSAML to impose a particular logging implementation -->
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>log4j-over-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>bouncycastle</groupId>
            <artifactId>bcprov-jdk15</artifactId>
            <version>${bcprov.jdk15.version}</version>
        </dependency>

        <!-- Junit Dependency -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- Since Rampart depends on DOOM, but axiom-dom is not a transitive
                 dependency, we need to manage the Axiom version. -->
            <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.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.5.5</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.15</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.mail</groupId>
                        <artifactId>mail</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.jms</groupId>
                        <artifactId>jms</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jdmk</groupId>
                        <artifactId>jmxtools</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.sun.jmx</groupId>
                        <artifactId>jmxri</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>oro</groupId>
                        <artifactId>oro</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <id>apache-release</id>
            <activation>
                <property>
                    <name>release</name>
                </property>
            </activation>
            <modules>
                <module>modules/documentation</module>
                <module>modules/distribution</module>
            </modules>
            <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>
        
        <profile>
            <!-- Profile that includes all modules. This is handy when using maven-release-plugin
                 for anything else than doing a release. -->
            <id>everything</id>
            <modules>
                <module>modules/documentation</module>
                <module>modules/distribution</module>
            </modules>
        </profile>
    </profiles>

    <modules>
        <module>modules/rampart-policy</module>
        <module>modules/rampart-trust</module>
        <module>modules/rampart-core</module>
        <module>modules/rampart-tests</module>
        <module>modules/rampart-mar</module>
        <module>modules/rampart-trust-mar</module>
        <module>modules/rampart-integration</module>
    </modules>

    <properties>
        <axis2.version>1.5.6</axis2.version>
        <axiom.version>1.2.12</axiom.version>

        <wss4j.version>1.5.12</wss4j.version>
        <opensaml.version>1.1</opensaml.version>

        <bcprov.jdk15.version>140</bcprov.jdk15.version>

        <junit.version>3.8.2</junit.version>

        <!-- distribution properties -->
        <dist.dir>rampart-${project.version}</dist.dir>
        <failIfNoTests>false</failIfNoTests>

    </properties>
</project>
