Include Directive

Description

An include directive instructs Merlin to load and deploy the block defined within the referenced jar file as a subcontainer within the enclosing container. The include directive is equivalent to the nesting of a full block definition within another block. Block includes enable composition of pre-packaged component based solutions as the included block appears to other components as a regular component (exposing services and dependecies, etc.).

Nested Elements

Element Occurance Description
target * A set of target directives scoped relative to the container established by the include. Each target declaration corresponds to the specification of target override target element presented under the config.xml spec.

Attributes

Attribute Required Description
name yes A name to assign to the container created by the block include. Will default to the name of the included block.
id yes The resource repository identifier.
version no The resource version.
type no A resource type such as 'jar' or 'xml'. Tge default value is 'jar'.

Sample XML

The following example block.xml demonstrates the inclusion of three blocks within another enclosing block. In this example, the common shared API (containing service interfaces classes is declared in the containing block classloader).

<container name="application">

     <classloader>
       <classpath>
         <repository>
           <resource id="avalon-framework:avalon-framework-api" version="4.1.5"/>
           <resource id="avalon-framework:avalon-framework-impl" version="4.1.5"/>
           <resource id="merlin-tutorial:locator-api" version="1.0"/>
           <resource id="merlin-tutorial:publisher-api" version="1.0"/>
           <resource id="merlin-tutorial:application-impl" version="1.0"/>
         </repository>
       </classpath>
     </classloader>

     <include name="location" id="merlin-tutorial:locator-impl" version="1.0"/>
     <include name="publisher" id="merlin-tutorial:publisher-impl" version="1.0"/>

     <component name="application" 
        class="tutorial.application.Application">
     </component>

</container>