<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  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>
    <pomVersion>1</pomVersion>
    <groupId>org.apache.jackrabbit</groupId>
    <currentVersion>1.0-SNAPSHOT</currentVersion>
    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
        <logo>http://www.apache.org/images/asf_logo_wide.png</logo>
    </organization>
    <inceptionYear>2005</inceptionYear>
    <package>org.apache.jackrabbit.extension</package>
    <description>The Jackrabbit Extension Framework is a simple framework providing functionality to easily extend applications&#xD;
in a plug-in style.</description>
    <shortDescription>Extension Framework for JCR Repositories</shortDescription>
    <repository />
    <developers>
        <developer>
            <name>Felix Meschberger</name>
            <id>1</id>
            <email>fmeschbe at apache dot org</email>
            <organization>Day Software</organization>
            <timezone>+1</timezone>
        </developer>
    </developers>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>/LICENSE.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <reports>
        <report>maven-javadoc-plugin</report>
        <report>maven-jdepend-plugin</report>
        <report>maven-license-plugin</report>
    </reports>
    <artifactId>extension-framework</artifactId>
    <name>Jackrabbit Extension Framework</name>
    <dependencies>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>classloader</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-core</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>jsr170</groupId>
            <artifactId>jcr</artifactId>
            <version>1.0</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.1</version>
            <type>jar</type>
        </dependency>
        <!-- Unit Testing -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.0</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.8</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>concurrent</groupId>
            <artifactId>concurrent</artifactId>
            <version>1.3.4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>lucene</groupId>
            <artifactId>lucene</artifactId>
            <version>1.4.3</version>
            <type>jar</type>
        </dependency>
    </dependencies>
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
            </resource>
        </resources>
        <unitTestSourceDirectory>src/test/java</unitTestSourceDirectory>
        <unitTest>
            <includes>
                <include>**/*TestAll.java</include>
            </includes>
            <resources>
                <resource>
                    <directory>src/test/resources</directory>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </unitTest>
    </build>
</project>

