The contents of this document are a work in progress

Plexus Component Descriptor Creator

NOTE: This document and the CDC itself is currently a work in progress.

The Component Descriptor Creator (or CDC for short) is a tool that will create the components.xml file from your Java code. It uses JavaDoc tags to gather the information it needs to create the component descriptor.

There is a tag for marking components, requirements and configuration. Each of the tags can have parameters as documented below.

Component Tag Parameters

Tag Required Description
role y The role of the component.
role-hint n The role-hint of the component.
version n The component version.
lifecycle-handler n The lifecycle handler of the component. TODO: link to the different lifecycle handlers
instantiation-strategy n The instantiation strategy of the component. TODO: link to the different instantiation strategies
package org.foo;

/**
 * @plexus.component
 *   role="com.foo.ActionManager"
 *   lifecycle-handler="plexus-configurable"
 */
public class DefaultActionManager
    extends AbstractLogEnabled
    implements ActionManager, Serviceable
{

This will be generated in component.xml:

<component>
  <role>org.foo.ActionManager</role>
  <implementation>org.foo.DefaultActionManager</implementation>
  <lifecycle-handler>plexus-configurable</lifecycle-handler>
</component>

Requirement Tag Parameters

These tags are used on fields to state requirements. TODO: it should be possible to override the role for a normal field.

Tag Required Description
role y/n The role of the component. Only required if the field is a List or Map
role-hint n The role-hint of the component.
/**
 * @plexus.requirement
 *  role-hint="foo"
 */
private ActionManager actionManager;

This will be generated in component.xml:

<component>
  <role>org.foo.MyComponent</role>
  <implementation>org.foo.MyComponentImplementation</implementation>
  <requirements>
    <requirement>
      <role>org.foo.ActionManager</role>
      <role-hint>foo</role-hint>
      <field-name>actionManager</field-name>
    </requirement>
  </requirements>
</component>

Configuration Tag Parameters

Note that the default value tag won't be required in the future when these tags will be used to generate a separate configuration declaration section.

Tag Required Description
default-value y Sets the default value for the configuration field
/**
 * @plexus.configuration
 *  default-value="Trygve"
 */
private String name;

This will be generated in component.xml:

<component>
  <role>org.foo.MyComponent</role>
  <implementation>org.foo.MyComponentImplementation</implementation>
  <configuration>
    <name>Trygve</name>
  </configuration>
</component>