<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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.
-->

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

    <parent>
        <groupId>org.apache.geronimo.genesis</groupId>
        <artifactId>genesis-java5-flava</artifactId>
        <version>2.0</version>
    </parent>

    <!-- These properties should be defined in top level pom.xml -->
    <properties>
        <!--
        NOTE: Project version, to be used instead of ${pom.version} since that
              value magically changes when using SNAPSHOT versions.
    
              This value *must* be kept in sync with the value of the <version>
              element, and it will need to be changed manually before a release,
              as the maven-release-plugin will not update this value.
        -->
        <siteId>yoko</siteId>
        <projectName>Apache Geronimo Yoko ORB</projectName>

        <!-- versions of external dependencies -->
        <ant.version>1.6.5</ant.version>
        <antrun.version>1.1</antrun.version>
        <!--<antlr.version>2.7.5</antlr.version>-->
        <bcel.version>5.2</bcel.version>
        <junit.version>4.5</junit.version>
        <compile.flags>-Xlint:unchecked,deprecation,fallthrough,finally</compile.flags>
        <java.endorsed.dirs>${basedir}/target/classes</java.endorsed.dirs>
        <site.version>2.0-beta-4</site.version>
        <compile.forked>false</compile.forked>
        <!--<no.checkstyle>false</no.checkstyle>-->
        <!--<no.pmd>false</no.pmd>-->
    </properties>

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.yoko</groupId>
    <artifactId>yoko</artifactId>
    <version>1.2</version>
    <name>Apache Yoko CORBA Server</name>
    <inceptionYear>2006</inceptionYear>
    <description>Apache Yoko CORBA Server</description>

    <url>http://geronimo.apache.org/maven/${siteId}/${version}</url>
    <distributionManagement>
        <site>
            <id>geronimo-website</id>
            <url>${staging.siteURL}/${siteId}/${version}</url>
        </site>
    </distributionManagement>

    <packaging>pom</packaging>

    <modules>
        <module>yoko-core</module>
        <module>yoko-spec-corba</module>
        <module>yoko-rmi-spec</module>
        <module>yoko-rmi-impl</module>
        <module>yoko-osgi</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <!--  Yoko modules -->
            <dependency>
                <groupId>org.apache.yoko</groupId>
                <artifactId>yoko-core</artifactId>
                <version>${version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.yoko</groupId>
                <artifactId>yoko-spec-corba</artifactId>
                <version>${version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.yoko</groupId>
                <artifactId>yoko-osgi</artifactId>
                <version>${version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.yoko</groupId>
                <artifactId>yoko-rmi-spec</artifactId>
                <version>${version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.yoko</groupId>
                <artifactId>yoko-rmi-impl</artifactId>
                <version>${version}</version>
            </dependency>
            <!--  External dependencies -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.servicemix.bundles</groupId>
                <artifactId>org.apache.servicemix.bundles.bcel</artifactId>
                <version>5.2_2</version>
            </dependency>
            <!--<dependency>-->
                <!--<groupId>org.apache.maven</groupId>-->
                <!--<artifactId>maven-plugin-api</artifactId>-->
                <!--<version>${maven.version}</version>-->
            <!--</dependency>-->
            <!--<dependency>-->
                <!--<groupId>org.apache.maven</groupId>-->
                <!--<artifactId>maven-project</artifactId>-->
                <!--<version>${maven.version}</version>-->
            <!--</dependency>-->
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
                <version>${ant.version}</version>
            </dependency>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant-nodeps</artifactId>
                <version>${ant.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </resource>
            <resource>
                <directory>target/generated/src/main/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </resource>
            <resource>
                <directory>${notice.dir}</directory>
                <targetPath>META-INF</targetPath>
                <filtering>true</filtering>
                <includes>
                    <include>LICENSE</include>
                    <include>NOTICE</include>
                    <include>DISCLAIMER.txt</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </testResource>
            <testResource>
                <directory>src/test/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </testResource>
            <testResource>
                <directory>target/generated/src/test/resources</directory>
                <includes>
                    <include>**</include>
                </includes>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>

        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>${antrun.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>ant</groupId>
                            <artifactId>ant-trax</artifactId>
                            <version>1.6.5</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <!--<plugin>-->
                    <!--<groupId>org.apache.maven.plugins</groupId>-->
                    <!--<artifactId>maven-surefire-plugin</artifactId>-->
                    <!--<configuration>-->
                        <!--<includes>-->
                            <!--<include>**/*Test.java</include>-->
                            <!--<include>**/*TestCase.java</include>-->
                        <!--</includes>-->
                        <!--<excludes>-->
                            <!--<exclude>**/*$*</exclude>-->
                        <!--</excludes>-->
                        <!--<reportFormat>brief</reportFormat>-->
                        <!--<useFile>false</useFile>-->
                        <!--<forkMode>once</forkMode>-->
                        <!--<childDelegation>false</childDelegation>-->
                        <!--<argLine>-ea</argLine>-->
                    <!--</configuration>-->
                <!--</plugin>-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${site.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>2.0.1</version>
                    <extensions>true</extensions>
                    <configuration>
                        <instructions>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Bundle-DocURL>${project.url}</Bundle-DocURL>
                        </instructions>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

    </build>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-clover-plugin</artifactId>
            </plugin>
            <!--plugin>
              <artifactId>maven-pmd-plugin</artifactId>
            </plugin!-->
            <plugin>
                <artifactId>maven-project-info-reports-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/geronimo/yoko/tags/yoko-1.2</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/geronimo/yoko/tags/yoko-1.2</developerConnection>
        <url>http://svn.apache.org/viewvc/geronimo/yoko/tags/yoko-1.2</url>
    </scm>

</project>