#
#
#    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.
#
#
h1. Synopsis

	${project.name}

	${project.description}

	Maven URL:
		[mvn:${project.groupId}/${project.artifactId}/${project.version}]

h1. Description

	This bundle is the core implementation of the Karaf kar support.

	Karaf Archives (KAR) is an artifact (zip file) shipping a features XML and the associated bundles or configuration files.

h1. Commands

	The bundle contains the following commands:
\${command-list|kar|indent=8,list,cyan}

h1. See also

	KAR - section of the Karaf User Guide
