<?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>j2ee</artifactId>
        <version>3.0-M1</version>
    </parent>

    <groupId>org.apache.geronimo.modules</groupId>
    <artifactId>geronimo-j2ee-builder</artifactId>
    <packaging>bundle</packaging>
    <name>Geronimo Plugins, J2EE :: Builder</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.modules</groupId>
            <artifactId>geronimo-j2ee-schema</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.framework</groupId>
            <artifactId>geronimo-service-builder</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.modules</groupId>
            <artifactId>geronimo-j2ee</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.framework</groupId>
            <artifactId>geronimo-deploy-config</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-ejb_3.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-javaee-deployment_1.1MR3_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_3.0_spec</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-saaj_1.3_spec</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jaxws_2.2_spec</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.xbean</groupId>
            <artifactId>xbean-finder</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.framework</groupId>
            <artifactId>geronimo-kernel</artifactId>
            <version>${project.version}</version>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <!--packages containing "impl" or "internal" are excluded by default -->
                        <Export-Package>
                            org.apache.geronimo.xbeans.geronimo.j2ee,
                            org.apache.geronimo.xbeans.geronimo.j2ee.impl,
                            org.apache.geronimo.j2ee.deployment,
                            org.apache.geronimo.j2ee.deployment.annotation,
                            org.apache.geronimo.j2ee.jsr88
                        </Export-Package>
                        <_exportcontents>schemaorg_apache_xmlbeans*</_exportcontents>
                        <DynamicImport-Package>schemaorg_apache_xmlbeans.*</DynamicImport-Package>
                        <Import-Package>
                            org.apache.geronimo.xbeans.javaee.impl,
                            org.apache.geronimo.xbeans.javaee,
                            org.apache.geronimo.xbeans.persistence.impl,
                            org.apache.geronimo.xbeans.persistence,
                            org.apache.geronimo.xbeans.j2ee.impl,
                            org.apache.geronimo.xbeans.j2ee,
                            org.w3.xml.x1998.namespace.impl,
                            org.w3.xml.x1998.namespace,
                            org.apache.geronimo.deployment.xbeans.impl,
                            org.apache.geronimo.deployment.javabean.xbeans.impl,
                            org.apache.geronimo.deployment.xbeans,
                            org.apache.geronimo.deployment.javabean.xbeans,
                            org.apache.geronimo.deployment.dconfigbean,
                            org.apache.geronimo.deployment.service,
                            org.apache.geronimo.deployment.service.jsr88,
                            org.apache.xmlbeans.impl.schema;version="2.4",
                            *
                        </Import-Package>
                        <!--<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>-->
                    </instructions>
                </configuration>
            </plugin>

            <!--<plugin>-->
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <!--<artifactId>maven-surefire-plugin</artifactId>-->
                <!--<configuration>-->
                    <!--<excludes>-->
                        <!--<exclude>**/EJBAnnotationExample</exclude>-->
                        <!--<exclude>**/HandlerChainAnnotationExample</exclude>-->
                        <!--<exclude>**/PersistenceContextAnnotationExample</exclude>-->
                        <!--<exclude>**/PersistenceUnitAnnotationExample</exclude>-->
                        <!--<exclude>**/SecurityAnnotationExample</exclude>-->
                        <!--<exclude>**/WebServiceRefAnnotationExample</exclude>-->
                    <!--</excludes>-->
                <!--</configuration>-->
            <!--</plugin>-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-test-resources</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-j2ee_1.3</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <destFileName>test-ear-j2ee_1.3.ear</destFileName>
                                </artifactItem>

                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-j2ee_1.3</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <!--
                                    FIXME: need to remove the geronimo-application.xml file from this ear.
                                    -->
                                    <destFileName>test-ear-j2ee_1.3-naked.ear</destFileName>
                                </artifactItem>

                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-j2ee_1.4</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <destFileName>test-ear-j2ee_1.4.ear</destFileName>
                                </artifactItem>

                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-j2ee_1.4</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <!--
                                    FIXME: need to remove the geronimo-application.xml file from this ear.
                                    -->
                                    <destFileName>test-ear-j2ee_1.4-naked.ear</destFileName>
                                </artifactItem>

                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-javaee_5</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <destFileName>test-ear-javaee_5.ear</destFileName>
                                </artifactItem>

                                <artifactItem>
                                    <groupId>org.apache.geronimo.testsupport</groupId>
                                    <artifactId>test-ear-javaee_5</artifactId>
                                    <version>${project.version}</version>
                                    <type>ear</type>
                                    <!--
                                    FIXME: need to remove the geronimo-application.xml file from this ear.
                                    -->
                                    <destFileName>test-ear-javaee_5-naked.ear</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <!--
                    NOTE: Unpack some deployment to test unpacked deployemnts... may want
                          to create full unpacked archives to unpack with the dependency plugin/
                    -->
                    <execution>
                        <phase>generate-test-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <mkdir dir="${project.build.directory}/test-ear-javaee_5-unpacked.ear" />
                                <unzip src="${project.build.directory}/test-ear-javaee_5.ear" dest="${project.build.directory}/test-ear-javaee_5-unpacked.ear" />

                                <mkdir dir="${project.build.directory}/test-ear-javaee_5-naked-unpacked.ear" />
                                <unzip src="${project.build.directory}/test-ear-javaee_5-naked.ear" dest="${project.build.directory}/test-ear-javaee_5-naked-unpacked.ear" />

                                <!-- are these tests needed ? -->
                                <mkdir dir="${project.build.directory}/test-ear-j2ee_1.4-unpacked.ear" />
                                <unzip src="${project.build.directory}/test-ear-j2ee_1.4.ear" dest="${project.build.directory}/test-ear-j2ee_1.4-unpacked.ear" />

                                <mkdir dir="${project.build.directory}/test-ear-javaee_5-naked-unpacked.ear" />
                                <unzip src="${project.build.directory}/test-ear-j2ee_1.4-naked.ear" dest="${project.build.directory}/test-ear-j2ee_1.4-naked-unpacked.ear" />
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xmlbeans-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

