osgiapache-karafapache-felixosgi-bundlekaraf

Are .kar Apache Karaf files meant to expose features only?


I am very new to OSGi and Karaf and I am still getting my head around the concepts and architecture.

My question is related to the .kar files which are created with the karaf-maven-plugin.

Does a .kar file meant to only install features into a Karaf runtime? What if we create a bundle and rename it to .kar instead of .jar. Is this a valid use case for .kar files?

Thanks


Solution

  • No, a kar file is much more than that as it is a mechanism to provide not only the features.xml but also any related OSGi bundles, configuration files, aso. inside a single artifact.

    That's also why it contains a mandatory repository/ directory (basically containing all OSGi bundles necessary for any of the features described by the features.xml in a Maven repository-style structure) and an optional resources/ directory (containing all the additional resources referenced by a feature).

    For a fully fledged example, you can have a look at the Apache Karaf framework archive:

    That one contains all the basic resources that make up the base for a custom Karaf installation and provide the basic set of features:

    META-INF/
    ...
    META-INF/MANIFEST.MF
    ...
    repository/
    ... OSGi bundles referenced by the features and the features.xml itself ...
    resources/
    resources/bin/
    ... scripts ...
    resources/data/
    ...
    resources/deploy/
    ...
    resources/etc/
    ... configuration files ...
    resources/lib/
    ... (non-OSGi) libraries needed (e.g. endorsed, extension, boot classpath) ...
    resources/system/
    ... OSGi framework implementation(s) and related libraries ...