<?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.1</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.1
        </connection>
        <developerConnection>
            scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/rampart/tags/v1.5.1
        </developerConnection>
        <url>http://svn.apache.org/viewvc/axis/axis2/java/rampart/tags/v1.5.1</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>


    <pluginRepositories>

        <pluginRepository>
            <id>snapshot-apache</id>
            <name>Apache Snapshot repository</name>
            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>

        <pluginRepository>
            <id>snapshot</id>
            <name>Snapshot repository</name>
            <url>http://snapshots.maven.codehaus.org/maven2</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>

    </pluginRepositories>


    <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>
                <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.apache.santuario</groupId>
            <artifactId>xmlsec</artifactId>
            <version>${xmlsec.version}</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>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.5.2</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.3</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
            <scope>test</scope>
            <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>

        <!-- 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>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <id>jdk14</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.4</jdk>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>bouncycastle</groupId>
                    <artifactId>bcprov-jdk14</artifactId>
                    <version>${bcprov.jdk14.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <id>jdk15</id>
            <activation>
                <jdk>1.5</jdk>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>bouncycastle</groupId>
                    <artifactId>bcprov-jdk15</artifactId>
                    <version>${bcprov.jdk15.version}</version>
                </dependency>
            </dependencies>
        </profile>

        <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>
    </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>

        <rampart.version>${pom.version}</rampart.version>
        <rampart.mar.version>${pom.version}</rampart.mar.version>
        <rahas.mar.version>${pom.version}</rahas.mar.version>

        <axis2.version>1.5.4</axis2.version>
        <axiom.version>1.2.10</axiom.version>

        <wss4j.version>1.5.10</wss4j.version>
		<xmlsec.version>1.4.2</xmlsec.version>
        <opensaml.version>1.1</opensaml.version>

        <bcprov.jdk14.version>140</bcprov.jdk14.version>
        <bcprov.jdk15.version>140</bcprov.jdk15.version>

        <junit.version>3.8.2</junit.version>
        <log4j.version>1.2.15</log4j.version>

        <!-- distribution properties -->
        <dist.dir>rampart-${pom.version}</dist.dir>
        <failIfNoTests>false</failIfNoTests>

    </properties>

    <distributionManagement>
		<snapshotRepository>
            <id>apache.snapshots.https</id>
            <name>${distMgmtSnapshotsName}</name>
            <url>${distMgmtSnapshotsUrl}</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
    </distributionManagement>

</project>
