<?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.
  -->
<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" name="${project.artifactId}">

    <feature name="ipojo" version="${project.version}"
             description="Apache Felix iPOJO Core Runtime">
        <bundle>mvn:${project.groupId}/org.apache.felix.ipojo/${project.version}</bundle>
    </feature>

    <feature name="ipojo-command" version="${project.version}"
             description="Apache Felix iPOJO Shell Command">
        <feature version="${project.version}">ipojo</feature>
        <bundle>mvn:${project.groupId}/org.apache.felix.ipojo.gogo/${project.version}</bundle>
    </feature>

    <feature name="ipojo-all" version="${project.version}"
             description="Apache Felix iPOJO All Runtime Bundles">
        <feature version="${project.version}">ipojo-command</feature>
        <bundle>mvn:${project.groupId}/org.apache.felix.ipojo.composite/${project.version}</bundle>
        <bundle>mvn:${project.groupId}/org.apache.felix.ipojo.api/${project.version}</bundle>
    </feature>

    <feature name="ipojo-webconsole" version="${project.version}"
             description="Apache Felix iPOJO Web Console Plugin">
        <feature version="${project.version}">ipojo</feature>
        <feature>webconsole</feature>
        <bundle>mvn:${project.groupId}/org.apache.felix.ipojo.webconsole/${ipojo.webconsole.version}</bundle>
    </feature>
</features>