<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2005 The Apache Software Foundation

    Licensed 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.
-->

<!-- $Rev$ $Date$ -->
<project>
    <pomVersion>3</pomVersion>
    <groupId>geronimo</groupId>
    <id>geronimo-packaging-plugin</id>
    <name>Geronimo :: Maven Packaging Plugin</name>
    <currentVersion>1.1.1-10</currentVersion>

    <dependencies>
        <dependency>
            <groupId>geronimo</groupId>
            <artifactId>geronimo-kernel</artifactId>
            <version>1.1.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>

        <dependency>
            <groupId>geronimo</groupId>
            <artifactId>geronimo-system</artifactId>
            <version>1.1.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
        <!-- needed for PlanProcessor to load EnvironmentBuilder which uses DeploymentException -->
        <dependency>
            <groupId>geronimo</groupId>
            <artifactId>geronimo-common</artifactId>
            <version>1.1.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
<!--
        <dependency>
            <groupId>geronimo</groupId>
            <artifactId>geronimo-j2ee</artifactId>
            <version>1.1.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
-->

        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.1_3</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
        <dependency>
            <groupId>mx4j</groupId>
            <artifactId>mx4j</artifactId>
            <version>3.0.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
        <dependency>
            <groupId>mx4j</groupId>
            <artifactId>mx4j-remote</artifactId>
            <version>3.0.1</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
         </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.8</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
         </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-qname_1.1_spec</artifactId>
            <version>1.0</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>

        <dependency>
            <groupId>xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.1.3</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>

        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3</artifactId>
            <version>1.1.3.3</version>
            <properties>
                <packaging.classpath>true</packaging.classpath>
            </properties>
        </dependency>

        <!-- dependency addition -->
        <dependency>
            <groupId>geronimo</groupId>
            <artifactId>geronimo-service-builder</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>xmlbeans</groupId>
            <artifactId>xbean</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>maven</groupId>
            <artifactId>maven</artifactId>
            <version>1.0.2</version>
        </dependency>


        <!-- dependencies for velocity pre-processing -->
        <dependency>
            <groupId>commons-jelly</groupId>
            <artifactId>commons-jelly</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>commons-jelly</groupId>
            <artifactId>commons-jelly-tags-velocity</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.4</version>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src/java</sourceDirectory>
        <unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>

        <resources>
            <resource>
                <directory></directory>
                <includes>
                    <include>plugin.jelly</include>
                    <include>plugin.properties</include>
                    <include>project.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}</directory>
                <includes>
                    <include>NOTICE.txt</include>
                </includes>
                <targetPath>META-INF</targetPath>
            </resource>
        </resources>
        <unitTest>
            <includes>
                <include>**/*Test.java</include>
            </includes>
            <excludes>
                <exclude>**/Abstract*.java</exclude>
            </excludes>
            <resources>
                <resource>
                    <directory>${basedir}/src/test-resources</directory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                </resource>
            </resources>
        </unitTest>
    </build>
</project>

