<?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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <artifactId>cxf-dosgi-ri-multibundle-distribution</artifactId>
  <name>Distributed OSGI Multi-Bundle Distribution</name>
  <url>http://cxf.apache.org</url>

  <parent>
    <groupId>org.apache.cxf.dosgi</groupId>
    <artifactId>cxf-dosgi-ri-distribution-parent</artifactId>
    <version>1.8-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <properties>
    <dosgi.version>${project.version}</dosgi.version>
    <topDirectoryLocation>../..</topDirectoryLocation>
    <karaf.version>3.0.6</karaf.version>
  </properties>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>

    <plugins>
    <plugin>
        <groupId>org.apache.karaf.tooling</groupId>
        <artifactId>karaf-maven-plugin</artifactId>
        <version>${karaf.version}</version>

        <executions>
          <execution>
            <id>features-add-to-repository</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>features-export-meta-data</goal>
              <goal>features-add-to-repository</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>mvn:org.apache.karaf.features/standard/${karaf.version}/xml/features</descriptor>
                <descriptor>mvn:org.apache.cxf.dosgi/cxf-dosgi/${project.version}/xml/features</descriptor>
              </descriptors>
              <features>
                <feature>cxf-dosgi-base</feature>
                <feature>aries-rsa-discovery-zookeeper</feature>
                <feature>cxf-dosgi-provider-cxf</feature>
              </features>
              <repository>target/distribution_bundles</repository>
              <resolveDefinedRepositoriesRecursively>true</resolveDefinedRepositoriesRecursively>
              <flatRepoLayout>true</flatRepoLayout>
              <mergedFeature>true</mergedFeature>
              <karafVersion>${karaf.version}</karafVersion>
            </configuration>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <configuration>
              <target>
                <xslt processor="trax" in="target/features.xml" out="target/filtered-features.xml" style="src/main/xsl/filter_features.xslt" />
                <xslt processor="trax" in="target/filtered-features.xml" out="target/distribution_configs/felix.config.properties.append" style="src/main/xsl/felix_distro_config.xslt" />
                <xslt processor="trax" in="target/filtered-features.xml" out="target/distribution_configs/config.ini" style="src/main/xsl/equinox_distro_config.xslt" />
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>./src/main/assembly/assembly.xml</descriptor>
              </descriptors>
            </configuration>

          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
</project>
