FABs have been designed to integrate smoothly with Apache Karaf features. Although there is some overlap in the capabilities of FABs and features, FABs cannot replace features completely. There are some cases, involving third-party dependencies, where figuring out the correct set of dependencies is inherently difficult and unavoidably it remains a manual process. Features remain the ideal mechanism for encapsulating these kinds of hand-crafted dependencies.
A FAB can be configured to require specific features, so that the required features are automatically installed at deploy time. For details of how to configure this, see Requiring features.
Automatic feature detection is a special case of requiring features. When the FAB
runtime scans an embedded pom.xml file, it automatically maps certain
Maven dependencies to features and installs the corresponding feature instead of the
Maven dependency.
For example, if the FAB runtime finds a Maven dependency on the the
org.apache.camel/camel-jetty artifact, it will automatically
install the camel-jetty feature.
The basic FAB model of deployment is rather aggressive: the FAB runtime walks the tree of Maven transitive dependencies, installing (and if necessary, also downloading) all of the dependencies that it finds along the way. This deployment model must be softened, however, if FABs are to integrate properly with features.
Features are manually constructed deployment units and, in many cases, they include combinations of bundles that an automated tool would never be able to figure out. For this reason, it is better if the FAB runtime respects the judgement of the developer who constructed the feature and does not try to install dependencies for bundles belonging to a feature. To avoid clobbering feature dependencies, the FAB runtime applies the following rule: by default, FAB does not try to install dependencies for a provided bundle, if that bundle is already installed.
This rule ensures that the FAB runtime does not try to second-guess the dependencies installed by a feature.








