<?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">
    <name>Apache Ranger</name>
    <description>
        Apache Ranger is a framework to enable, monitor and manage comprehensive data security across the Hadoop platform. Apache Ranger currently provides a centralized security adminstration, fine grain access control and detailed auditing for user access within Apache Hadoop, Apache Hive, Apache HBase and other Apache components
        
    </description>
    <url>http://ranger.incubator.apache.org/</url>
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>org.incubator.apache.ranger</groupId>
    <version>0.5.4-SNAPSHOT</version>
    <artifactId>ranger</artifactId>
    <packaging>pom</packaging>

    
    <licenses>
        <license>
            <name>Apache 2</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    
    <scm>
        <connection>scm:svn:https://svn.apache.org/repos/asf/incubator/ranger/site/trunk</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/ranger/site/trunk</developerConnection>
        <tag>HEAD</tag>
        <url>http://svn.apache.org/repos/asf/incubator/ranger/site/trunk</url>
    </scm>

    <issueManagement>
        <system>Jira</system>
        <url>http://issues.apache.org/jira/browse/ranger</url>
    </issueManagement>
    
    <mailingLists>
        <mailingList>
            <name>User list</name>
            <subscribe>mailto:user-subscribe@ranger.incubator.apache.org
            </subscribe>
            <unsubscribe>mailto:user-unsubscribe@ranger.incubator.apache.org
            </unsubscribe>
            <post>mailto:user@ranger.incubator.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/ranger-user/</archive>
        </mailingList>
        <mailingList>
            <name>Development list</name>
            <subscribe>mailto:dev-subscribe@ranger.incubator.apache.org
            </subscribe>
            <unsubscribe>mailto:dev-unsubscribe@ranger.incubator.apache.org
            </unsubscribe>
            <post>mailto:dev@ranger.incubator.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/ranger-dev/</archive>
        </mailingList>
        <mailingList>
            <name>Commit list</name>
            <subscribe>mailto:commits-subscribe@ranger.incubator.apache.org
            </subscribe>
            <unsubscribe>mailto:commits-unsubscribe@ranger.incubator.apache.org
            </unsubscribe>
            <post>mailto:commits@ranger.incubator.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/ranger-commits/</archive>
        </mailingList>
    </mailingLists>
    <developers>
        <developer>
            <id>agates</id>
            <name>Alan Gates</name>
            <email>gates@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Mentor</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>bganesan</id>
            <name>Balaji Ganesan</name>
            <email>bganesan@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>ddruno</id>
            <name>Daniel Gruno</name>
            <email>rumble@cord.dk</email>
            <timezone>+1</timezone>
            <roles>
                <role>Mentor</role>
            </roles>
            <organization>
                Quokka IvS
            </organization>
        </developer>
    <developer>
        <id>ddas</id>
        <name>Devaraj Das</name>
        <email>ddas@hortonworks.com</email>
        <timezone>-8</timezone>
        <roles>
            <role>PMC</role>
        </roles>
        <organization>
            Hortonworks
        </organization>
    </developer>
        <developer>
            <id>ddorai</id>
            <name>Dilli Arumugam</name>
            <email>dillidorai@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>bdurai</id>
            <name>Don Bosco Durai</name>
            <email>bosco@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>jghoman</id>
            <name>Jakob Homan</name>
            <email>jghoman@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Mentor</role>
            </roles>
            <organization>
                Microsoft
            </organization>
        </developer>
        <developer>
            <id>kminder</id>
            <name>Kevin Minder</name>
            <email>kminder@apache.org</email>
            <timezone>-5</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>lmccay</id>
            <name>Larry Mccay</name>
            <email>lmccay@apache.org</email>
            <timezone>-5</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>mneethiraj</id>
            <name>Madhanmohan Neethiraj</name>
            <email>madhan@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>omalley</id>
            <name>Owen O'Malley</name>
            <email>omalley@apache.org</email>
            <timezone>-8</timezone>
            <roles>
                <role>Champion, Committer, Mentor</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>rmani</id>
            <name>Ramesh Mani</name>
            <email>mani@hortonworks.com</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
                <organization>
                    Hortonworks
                </organization>
        </developer>
            <developer>
            <id>sradia</id>
            <name>Sanjay Radia</name>
            <email>sanjay@hortonworks.com</email>
            <timezone>-8</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
        </developer>
        <developer>
            <id>sneethiraj</id>
            <name>Selvamohan Neethiraj</name>
            <email>sneethir@apache.org</email>
            <timezone>-5</timezone>
            <roles>
                <role>Committer</role>
            </roles>
            <organization>
                Hortonworks
            </organization>
            </developer>
        </developers>
    <contributors>
        <contributor>
        </contributor>
    </contributors>
    
    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.4.3</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
				<!--
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                </plugin>
				-->
                <plugin>
                    <inherited>true</inherited>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                    <configuration>
                        <outputDirectory>./target</outputDirectory>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    
    <reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.4</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>project-team</report>
                            <report>mailing-list</report>
                            <report>issue-tracking</report>
                            <report>license</report>
                            <report>summary</report>
                            <!-- for now
                             <report>modules</report>
                             <report>dependencies</report>
                             <report>cim</report>
                             <report>scm</report>
                             -->
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
        </plugins>
    </reporting>
    
    <distributionManagement>
        <site>
            <id>apache-website</id>
            <name>Apache website</name>
            <url>scpexe://people.apache.org/www/incubator.apache.org/ranger</url>
        </site>
    </distributionManagement>
    
</project>
