<?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/xsd/maven-4.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>service-engines</artifactId>
        <version>2011.02</version>
    </parent>

    <groupId>org.apache.servicemix</groupId>
    <artifactId>servicemix-script</artifactId>
    <packaging>jbi-component</packaging>
    <name>Apache ServiceMix :: Components :: Scripting Service Engine</name>
    <description>
        The ServiceMix Script component provides JBI integration with scripting engines. This component leverages Spring support for dynamic language.
    </description>

    <properties>
        <asm.version>2.2.3</asm.version>
        <backport-util-concurrent.version>2.2</backport-util-concurrent.version>
        <cglib.version>2.1_3</cglib.version>
        <groovy.version>1.8.3</groovy.version>
        <jruby.version>1.4.0</jruby.version>

        <servicemix.osgi.import>
            !org.apache.servicemix.script*,
            !META-INF.services.org.apache.xbean.spring.http.servicemix.apache.org.script,
            org.apache.servicemix.common,
            org.apache.servicemix.common.osgi,
            org.apache.servicemix.executors.impl,
            org.apache.servicemix.jbi.container*;resolution:=optional,
            org.apache.servicemix.jbi.framework*;resolution:=optional,
            org.apache.xbean.spring.context.v2,
            org.springframework.beans.factory.xml,
            sun.misc;resolution:=optional,
            *
        </servicemix.osgi.import>
        <servicemix.osgi.export>
            org.apache.servicemix.script*;version=${project.version},
            META-INF.services.org.apache.xbean.spring.http.servicemix.apache.org.script
        </servicemix.osgi.export>
    </properties>

    <dependencies>
        <dependency>
            <groupId>backport-util-concurrent</groupId>
            <artifactId>backport-util-concurrent</artifactId>
            <version>${backport-util-concurrent.version}</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>${cglib.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-shared</artifactId>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>${groovy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby</artifactId>
            <version>${jruby.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>        

        <!-- provided -->
        <dependency>
            <groupId>org.apache.servicemix.specs</groupId>
            <artifactId>org.apache.servicemix.specs.jbi-api-1.0</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- test -->
        <dependency>
            <groupId>asm</groupId>
            <artifactId>asm-all</artifactId>
            <version>${asm.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-core</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-jmx</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!-- documentation -->
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-common</artifactId>
            <classifier>sources</classifier>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.servicemix.tooling</groupId>
                <artifactId>jbi-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <type>service-engine</type>
                    <component>org.apache.servicemix.script.ScriptComponent</component>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.xbean</groupId>
                <artifactId>maven-xbean-plugin</artifactId>
                <executions>
                    <execution>
                        <configuration>
                            <namespace>
                                http://org.apache.servicemix/script/1.0
                            </namespace>
                        </configuration>
                        <goals>
                            <goal>mapping</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
