<?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.

-->
<geronimo-plugin-list xmlns="http://geronimo.apache.org/xml/ns/plugins-1.1">
    <plugin>
        <name>ServiceMix Integration</name>
        <module-id>org.apache.servicemix.geronimo/servicemix/3.1-incubating-SNAPSHOT/car</module-id>
        <category>Integration</category>
        <description>This plugin integrates Apache ServiceMix JBI container to Apache Geronimo.</description>
        <url>http://incubator.apache.org/servicemix</url>
        <author>The ServiceMix development team</author>
        <license osi-approved="true">BSD -- Apache Software License (ASL) 2.0</license>
        <geronimo-version>2.0.1</geronimo-version>
        <dependency>org.apache.geronimo/j2ee-server//car</dependency>
        <dependency>org.apache.servicemix/servicemix-jbi//jar</dependency>
        <dependency>org.apache.servicemix/servicemix-core//jar</dependency>
        <dependency>org.apache.servicemix/servicemix-services//jar</dependency>
        <dependency>org.apache.activemq/activemq-core//jar</dependency>
        <dependency>org.apache.activemq/activeio-core//jar</dependency>
        <dependency>wsdl4j/wsdl4j//jar</dependency>
        <dependency>org.jencks/jencks//jar</dependency>
        <dependency>commons-beanutils/commons-beanutils-core//jar</dependency>
        <dependency>org.springframework/spring-beans//jar</dependency>
        <dependency>org.springframework/spring-core//jar</dependency>
        <dependency>org.springframework/spring-context//jar</dependency>
        <dependency>org.springframework/spring-dao//jar</dependency>
        <dependency>org.springframework/spring-jmx//jar</dependency>
        <dependency>org.apache.xbean/xbean-spring//jar</dependency>
        <dependency>org.apache.xbean/xbean-kernel//jar</dependency>
        <dependency>org.apache.xbean/xbean-server//jar</dependency>
        <dependency>org.apache.xbean/xbean-classloader//jar</dependency>
        <obsoletes>org.apache.servicemix.geronimo/servicemix//car</obsoletes>
        <source-repository>http://people.apache.org/repo/m2-snapshot-repository/</source-repository>
        <source-repository>http://snapshots.repository.codehaus.org/</source-repository>
        <source-repository>http://people.apache.org/repo/m2-incubating-repository/</source-repository>
        <source-repository>http://www.ibiblio.org/maven2/</source-repository>
    </plugin>
    <plugin>
        <name>ServiceMix Deployer</name>
        <module-id>org.apache.servicemix.geronimo/deployer/${servicemix-version}/car</module-id>
        <category>Integration</category>
        <description>JBI artifacts deployer for Apache ServiceMix JBI container.</description>
        <url>http://incubator.apache.org/servicemix</url>
        <author>The ServiceMix development team</author>
        <license osi-approved="true">BSD -- Apache Software License (ASL) 2.0</license>
        <geronimo-version>${geronimo-version}</geronimo-version>
        <dependency>org.apache.servicemix.geronimo/servicemix//car</dependency>
        <dependency>org.apache.servicemix.geronimo/deployer//jar</dependency>
        <dependency>org.apache.geronimo/geronimo-gbean-deployer//car</dependency>
        <dependency>org.apache.geronimo/j2ee-server//car</dependency>
        <dependency>org.apache.geronimo/j2ee-deployer//car</dependency>
        <obsoletes>org.apache.servicemix.geronimo/deployer//car</obsoletes>
        <source-repository>http://people.apache.org/repo/m2-snapshot-repository/</source-repository>
        <source-repository>http://snapshots.repository.codehaus.org/</source-repository>
        <source-repository>http://people.apache.org/repo/m2-incubating-repository/</source-repository>
        <source-repository>http://www.ibiblio.org/maven2/</source-repository>
    </plugin>
    <default-repository>http://servicemix.org/geronimo/</default-repository>
    <default-repository>http://people.apache.org/repo/m2-incubating-repository/</default-repository>
</geronimo-plugin-list>
