<?xml version="1.0"?>
<!--
     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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.felix.atomos.tests</groupId>
        <artifactId>org.apache.felix.atomos.tests</artifactId>
        <version>1.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>org.apache.felix.atomos.tests.modulepath.service</artifactId>
    <name>atomos.tests.modulepath.service</name>
    <profiles>
        <profile>
            <id>default-compile</id>
            <dependencies>
                <dependency>
                   <groupId>org.osgi</groupId>
                    <artifactId>osgi.core</artifactId>
                </dependency>
            </dependencies>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>equinox</id>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.platform</groupId>
                    <artifactId>org.eclipse.osgi</artifactId>
                    <scope>provided</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.felix.atomos</groupId>
                    <artifactId>osgi.core</artifactId>
                    <version>8.0.1-SNAPSHOT</version>
                    <classifier>AtomosEquinox</classifier>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>felix</id>
            <dependencies>
                <dependency>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>org.apache.felix.framework</artifactId>
                    <scope>provided</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.felix.atomos</groupId>
                    <artifactId>osgi.core</artifactId>
                    <version>8.0.1-SNAPSHOT</version>
                    <classifier>AtomosFelix</classifier>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.atomos</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.impl</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.impl.a</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.impl.b</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.impl.activator</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.library</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.service.user</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.resource.a</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.dependency.a</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.dependency.b</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix.atomos.tests</groupId>
            <artifactId>org.apache.felix.atomos.tests.testbundles.dependent.x</artifactId>
            <version>1.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.scr</artifactId>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>osgi.promise</artifactId>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/modules</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                            <excludeTransitive>true</excludeTransitive>
                            <includeArtifactIds>
                                org.apache.felix.atomos.tests.testbundles.resource.a,
                                org.apache.felix.atomos.tests.testbundles.service.impl.a,
                                org.apache.felix.atomos.tests.testbundles.service.impl.b,
                                org.apache.felix.atomos.tests.testbundles.service.library,
                                org.apache.felix.atomos.tests.testbundles.service.user,
                                org.apache.felix.atomos.tests.testbundles.dependency.a,
                                org.apache.felix.atomos.tests.testbundles.dependency.b,
                                org.apache.felix.atomos.tests.testbundles.dependent.x
                            </includeArtifactIds>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>