<!--
  Copyright (C) 2009-2013, JoshuaTree. All Rights Reserved.
  Licensed to Joshua Tree Software, LLC under New BSD license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  JTS licenses this file to You under the New BSD License
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

       http://jts.us/License

   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>
  <modelVersion>4.0.0</modelVersion>
  <groupId>us.joshuatreesoftware</groupId>
  <artifactId>sentry</artifactId>
  <packaging>jar</packaging>
  <name>Fortress Sentry</name>
  <version>1.0-RC32</version>
  <description>Java EE Security Plug-in for Fortress RBAC access management.</description>
  <url>https://jts.us</url>
  <licenses>
    <license>
      <name>BSD</name>
      <url>https://jts.us/License</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <url>http://www.openldap.org/software/repo/openldap-fortress-realm.git</url>
    <connection>git://git.openldap.org/openldap-fortress-realm.git</connection>
  </scm>
  <developers>
    <developer>
      <id>smckinney</id>
      <name>Shawn McKinney</name>
      <email>shawn.mckinney@jts.us</email>
    </developer>
  </developers>
  <dependencies>
    <dependency>
     <groupId>us.joshuatreesoftware</groupId>
      <artifactId>fortress</artifactId>
      <version>1.0-RC32</version>
    </dependency>
    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>catalina</artifactId>
       <version>6.0.33</version>
    </dependency>
    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-catalina</artifactId>
       <version>7.0.22</version>
    </dependency>
  </dependencies>
</project>