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

<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</groupId>
        <artifactId>org.apache.felix.ipojo.distributions</artifactId>
        <version>1.9.0-SNAPSHOT</version>
    </parent>

    <artifactId>ten-minutes-tutorial</artifactId>
    <version>1.9.0-SNAPSHOT</version>

    <description>This project builds the 10 minutes tutorial package</description>


    <properties>
        <felix.version>4.2.1</felix.version>
        <ipojo.ant.version>1.9.0-SNAPSHOT</ipojo.ant.version>
        <ipojo.runtime.version>1.9.0-SNAPSHOT</ipojo.runtime.version>
        <bnd.version>1.50.0</bnd.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.7</version>
                <executions>

                    <execution>
                        <id>unpack-felix</id>
                        <phase>package</phase>
                        <goals>
                            <goal>unpack-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>org.apache.felix.main.distribution</includeArtifactIds>
                            <outputDirectory>${project.build.directory}/dist</outputDirectory>
                        </configuration>
                    </execution>

                    <execution>
                        <id>copy-ant-tasks</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>
                                org.apache.felix.ipojo.ant,
                                bnd
                            </includeArtifactIds>
                            <outputDirectory>${project.build.directory}/dist/tasks
                            </outputDirectory>
                        </configuration>
                    </execution>

                    <execution>
                        <id>copy-bundles</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeArtifactIds>
                                org.apache.felix.ipojo.properties.handler,
                                org.apache.felix.ipojo.properties.consumer,
                                org.apache.felix.ipojo,
                                org.apache.felix.ipojo.arch.gogo
                            </includeArtifactIds>
                            <outputDirectory>${project.build.directory}/dist/felix-framework-${felix.version}/bundle
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--
             we also copy properties file to the distribution folder,
             the properties are stored in src/main/resources/props
             -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-skeleton</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/dist
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/skeleton</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                            <includeEmptyDirs>true</includeEmptyDirs>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-solution</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/dist/solution
                            </outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/solution</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                            <includeEmptyDirs>true</includeEmptyDirs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <ant dir="target/dist" target="clean"/>
                                <ant dir="target/dist" target="package"/>
                                <ant dir="target/dist" target="dist"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>${project.build.directory}/dist/dist/tutorial.zip</file>
                                    <type>zip</type>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.ipojo.ant</artifactId>
            <version>${ipojo.ant.version}</version>
        </dependency>
        <dependency>
            <groupId>biz.aQute</groupId>
            <artifactId>bnd</artifactId>
            <version>${bnd.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.main.distribution</artifactId>
            <type>zip</type>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.ipojo</artifactId>
            <version>${ipojo.runtime.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.ipojo.arch.gogo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.ipojo.annotations</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.ipojo</artifactId>
                <version>1.8.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.ipojo.arch.gogo</artifactId>
                <version>1.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.main.distribution</artifactId>
                <version>4.2.1</version>
                <type>zip</type>
            </dependency>
            <dependency>
                <groupId>org.apache.felix</groupId>
                <artifactId>org.apache.felix.ipojo.annotations</artifactId>
                <version>1.8.6</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
</project>