<?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.modules</groupId>
        <artifactId>modules</artifactId>
        <version>2.0-M3</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>geronimo-web-2.5-builder</artifactId>
    <name>Geronimo :: Web 2.5 :: Builder</name>

    <dependencies>

        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>geronimo-j2ee-builder</artifactId>
            <version>${version}</version>
        </dependency>

        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>geronimo-security-builder</artifactId>
            <version>${version}</version>
        </dependency>

        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>geronimo-service-builder</artifactId>
            <version>${version}</version>
        </dependency>

        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>geronimo-naming-builder</artifactId>
            <version>${version}</version>
        </dependency>


        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>geronimo-test-ddbean</artifactId>
            <version>${version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.schema</groupId>
            <artifactId>geronimo-schema-jee_5</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_2.5_spec</artifactId>
        </dependency>

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xmlbeans-maven-plugin</artifactId>
                <configuration>
                    <sourceSchemas>geronimo-web-1.2.xsd</sourceSchemas>
                </configuration>
            </plugin>
            
            <!--
            HACK: Copy the generated XmlBeans bits for clover
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <mkdir dir="${pom.basedir}/target/clover/classes"/>
                                <copy todir="${pom.basedir}/target/clover/classes">
                                    <fileset dir="${pom.basedir}/target/classes">
                                        <include name="schemaorg_apache_xmlbeans/**"/>
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!--
    HACK: jstl:jstl:jar:1.2 is not available on a m2 repo, so include them here
          to avoid needing to setup an m1 repo which causes problems resolving
          dependencies.
    -->
    <!--
    HACK: Include local repo to pick up the MyFaces jars which have not yet been released
    -->
    <repositories>
        <repository>
            <id>java.net</id>
            <url>https://maven-repository.dev.java.net/nonav/repository</url>
            <layout>legacy</layout>
        </repository>
    </repositories>

</project>

