Hi Matthias, By default, the features are installed asynchronously (in different threads).
1/ The prerequisite flag "forces" the dependency feature to be fully installed before continuing the current feature. So it means basically, that: <feature name="foo"> <feature prerequisite="true">bar</feature> <bundle>b</bundle> </feature> The bar feature will be fully installed and started before the installation of bundle b. 2/ dependency flag is a way to avoid to install a feature if there are already other features or bundles installed providing the same capabilities. Imagine, you have a feature provide Capability:foo, if you have a second feature with the same Capability, it's not necessary to install it. A good example is the way we manage the HTTP provider (Jetty, Tomcat, Undertow). In your feature, you define you need a capability http-provider. If you have a feature already providing this capability (let's say pax-web-jetty), then the pax-web-tomcat feature won't be installed. So it means, that: <feature name="foo"> <feature dependency="true">pax-web-tomcat</feature> <bundle>b</bundle> </feature> pax-web-tomcat feature will be installed only if pax-web-jetty is not already installed. Regards JB On Wed, Mar 13, 2024 at 8:52 AM Matthias Koch <matthias.k...@averbis.com> wrote: > > Hi > > we are currently building more and more features for our custom assembly > and we have problems of understanding the differences of: > > 1. A depending feature > 2. A depending feature with prerequisite=true > 3. A depending feature with dependency=true > > > Here is what we understand (or at least think we understand) so far. > > 1. > <feature name="foo"> > <feature dependency="false" prerequisite="false">bar</feature> > </feature> > The feature foo depends on feature bar. So if you install feature foo, > then feature bar is also installed. > Additionally when we create feature foo via maven plugin, no bundle that > already exists in feature bar we be added to the bundle list. > > 2. > <feature name="foo"> > <feature dependency="false" prerequisite="true">bar</feature> > </feature> > The feature bar is prerequisite of feature foo and will therefore be > 'started' before feature foo is installed. > > 3. > <feature name="foo"> > <feature dependency="true" prerequisite="false">bar</feature> > </feature> > We can't figure out what this configuration does. > > Please tell me if we are understanding the 1. and 2. part correctly and > help me understand what the 3. part means. > > Kind regards > Matthias >