<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
    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.
-->

<!-- $Rev$ $Date$ -->

<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">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.geronimo.plugins</groupId>
        <artifactId>jetty</artifactId>
        <version>2.1.8</version>
    </parent>
    
    <groupId>org.apache.geronimo.configs</groupId>
    <artifactId>jetty6-deployer</artifactId>
    <name>Geronimo Plugins, Jetty :: Deployer</name>
    <packaging>car</packaging>

    <description>Geronimo deployer for Jetty 6 Web Server integration.</description>
    
    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.configs</groupId>
            <artifactId>j2ee-deployer</artifactId>
            <version>${version}</version>
            <type>car</type>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.configs</groupId>
            <artifactId>connector-deployer</artifactId>
            <version>${version}</version>
            <type>car</type>
        </dependency>

        <!-- similar thing not needed in tomcat !!! -->
        <dependency>
            <groupId>org.apache.geronimo.configs</groupId>
            <artifactId>jetty6</artifactId>
            <version>${version}</version>
            <type>car</type>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.modules</groupId>
            <artifactId>geronimo-jetty6-builder</artifactId>
            <version>${version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.modules</groupId>
            <artifactId>geronimo-web-2.5-builder</artifactId>
            <version>${version}</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.geronimo.buildsupport</groupId>
                <artifactId>car-maven-plugin</artifactId>
                <configuration>
                    <useMavenDependencies>
                        <value>false</value>
                    </useMavenDependencies>
                    <category>Jetty</category>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.geronimo.configs</groupId>
                            <artifactId>connector-deployer</artifactId>
                            <version>${version}</version>
                            <type>car</type>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.geronimo.configs</groupId>
                            <artifactId>jetty6</artifactId>
                            <version>${version}</version>
                            <type>car</type>
                            <import>classes</import>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.geronimo.configs</groupId>
                            <artifactId>j2ee-deployer</artifactId>
                            <version>${version}</version>
                            <type>car</type>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.geronimo.modules</groupId>
                            <artifactId>geronimo-web-2.5-builder</artifactId>
                            <version>${version}</version>
                            <type>jar</type>
                            <import>classes</import>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.geronimo.modules</groupId>
                            <version>${version}</version>
                            <artifactId>geronimo-jetty6-builder</artifactId>
                            <type>jar</type>
                            <import>classes</import>
                        </dependency>
                    </dependencies>
                    <instance>
                        <plugin-artifact>
                            <config-xml-content server="default" />
                            <config-xml-content server="offline" />
                        </plugin-artifact>
                    </instance>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
