<?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.management</groupId>
	    <artifactId>management</artifactId>
        <version>4.0-m1</version>
    </parent>

    <groupId>org.apache.servicemix.management</groupId>
    <artifactId>org.apache.servicemix.management.acegi</artifactId>
    <packaging>bundle</packaging>
    <version>4.0-m1</version>
    <name>Apache ServiceMix Management Acegi</name>

    <dependencies>
        <dependency>
            <groupId>org.acegisecurity</groupId>
            <artifactId>acegi-security</artifactId>
            <version>${acegi.version}</version>
            <exclusions>
                <exclusion>
		            <groupId>org.springframework</groupId>
		            <artifactId>spring-remoting</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>${felix.osgi.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <version>${felix.compendium.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>${commons.logging.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                        <Import-Package>org.apache.servicemix.security.api*;resolution:=optional,*</Import-Package>
                        <Export-Package>org.apache.servicemix.management*</Export-Package>
                        <DynamicImport-Package>*</DynamicImport-Package>
                        <Private-Package>
                        </Private-Package>
                        <Spring-Context>*;publish-context:=false</Spring-Context>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <includeProjectDependencies>false</includeProjectDependencies>
                    <includePluginDependencies>true</includePluginDependencies>
                    <executableDependency>
                        <groupId>org.ops4j.pax.runner</groupId>
                        <artifactId>pax-runner</artifactId>
                    </executableDependency>
                    <mainClass>org.ops4j.pax.runner.Run</mainClass>
                    <arguments>
                        <argument>--vmOptions=-Dbundles.configuration.location=${basedir}/src/test/configs</argument>
                        <argument>--console</argument>
                        <argument>mvn:org.apache.felix/org.apache.felix.configadmin/0.9.0-SNAPSHOT</argument>
                        <argument>mvn:org.ops4j.pax.confman/pax-confman-propsloader/0.3.0-SNAPSHOT</argument>
                        <argument>mvn:org.ops4j.pax.logging/pax-logging-api/0.9.7-SNAPSHOT</argument>
                        <argument>mvn:org.ops4j.pax.logging/pax-logging-service/0.9.7-SNAPSHOT</argument>
                        <argument>mvn:org.springframework.osgi/spring-osgi-core/${spring.osgi.version}</argument>
                        <argument>mvn:org.springframework.osgi/spring-osgi-extender/${spring.osgi.version}</argument>
                        <argument>mvn:org.springframework.osgi/spring-osgi-io/${spring.osgi.version}</argument>
                        <argument>mvn:org.springframework/spring-aop/${spring.version}</argument>
                        <argument>mvn:org.springframework/spring-beans/${spring.version}</argument>
                        <argument>mvn:org.springframework/spring-context/${spring.version}</argument>
                        <argument>mvn:org.springframework/spring-core/${spring.version}</argument>
                        <argument>
                            mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0-${project.version}
                        </argument>
                        <argument>mvn:org.apache.servicemix/org.apache.servicemix.management/${project.version}
                        </argument>
                    </arguments>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.ops4j.pax.runner</groupId>
                        <artifactId>pax-runner</artifactId>
                        <version>0.5.1</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>


</project>
