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

<!--

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

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix</groupId>
        <artifactId>platforms</artifactId>
        <version>3.4.1</version>
    </parent>

    <groupId>org.apache.servicemix.geronimo</groupId>
    <artifactId>geronimo</artifactId>
    <name>Servicemix :: Geronimo</name>
    <packaging>pom</packaging>
  
    <properties>
        <geronimoVersion>${geronimo-version}</geronimoVersion>
        <car-maven-plugin-version>${geronimo-version}</car-maven-plugin-version>
        <geronimoSchemaVersion>1.2</geronimoSchemaVersion>
        <gbeanDeployer>org.apache.geronimo.configs/geronimo-gbean-deployer/${project.version}/car</gbeanDeployer>
        <xbean-version>3.1</xbean-version>
    </properties>

    <repositories>
      <repository>
        <id>geronimo-2.0.1-repo</id>
        <url>http://svn.apache.org/repos/asf/geronimo/server/tags/2.0.1/repository</url>
      </repository>
    </repositories>
    
    <modules>
        <module>servicemix-service</module>
        <module>deployer-service</module>
        <!--<module>dependencies</module>-->
        <module>servicemix</module>
        <module>deployer</module>
    </modules>

    <dependencyManagement>
      <dependencies>
        <!-- make sure to exclude myfaces-api everywhere so we don't hit maven-repository.dev.java.net -->
        <dependency>
          <groupId>org.apache.geronimo.configs</groupId>
          <artifactId>jee-specs</artifactId>
          <version>${geronimo-version}</version>
          <type>car</type>
          <scope>provided</scope>
          <exclusions>
            <exclusion>
              <groupId>org.apache.myfaces.core</groupId>
              <artifactId>myfaces-api</artifactId>
            </exclusion>
          </exclusions>          
        </dependency>
      </dependencies>
    </dependencyManagement>

</project>
