Author: brett
Date: Wed Jun 15 23:08:34 2005
New Revision: 190877

URL: http://svn.apache.org/viewcvs?rev=190877&view=rev
Log: (empty)

Modified:
    maven/components/trunk/maven-site/src/site/apt/lifecycle.apt

Modified: maven/components/trunk/maven-site/src/site/apt/lifecycle.apt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/lifecycle.apt?rev=190877&r1=190876&r2=190877&view=diff
==============================================================================
--- maven/components/trunk/maven-site/src/site/apt/lifecycle.apt (original)
+++ maven/components/trunk/maven-site/src/site/apt/lifecycle.apt Wed Jun 15 
23:08:34 2005
@@ -99,6 +99,8 @@
   plugins contain information that says where to bind particular goals to. 
Note that adding the plugin on its own is not
   enough information - you must also specify the goals you want run as part of 
your build.
 
+  The goals that are configured will be added to the goals already bound to 
the lifecycle from the packaging selected.
+
   For example, the Modello plugin always binds <<<modello:java>>> to the 
<<<generate-sources>>> phase. So to use the
   Modello plugin and have it generate sources from a model and incorporate 
that into the build, you would add the
   following to your POM in the <<<plugins>>> section of <<<build>>>:
@@ -156,8 +158,6 @@
 ...
 ----
 
-   TODO
-
 * Build Lifecycle Phase Reference
 
   The following phases are all the ones available as of the Maven 2.0 alpha-3 
release. They are executed in the order
@@ -203,6 +203,74 @@
 
 * How the Build Lifecycle Affects Plugin Developers
 
- TODO
+  The build lifecycle ensures that plugin developers only need to make their 
individual goal (a "mojo") perform a single
+  task with a simple set of inputs and outputs, and then have that goal bound 
to the appropriate stage of the build.
+
+  Information is passed between goals only through the project object - for 
example by adding new compile source roots,
+  changing the location of the classes directory after processing, and so on.
+
+  There are 3 ways that a plugin can interact with the build lifecycle: by 
binding a mojo to a particular phase, by
+  specifying an alternate packaging and appropriate lifecycle bindings, or by 
forking a parallel lifecycle.
+
+** Binding a Mojo to a Phase
+
+  If the mojo is participating in a part of the normal build, usually the 
plugin developer will bind that mojo to a
+  particular phase, using the following syntax in the mojo level declaration:
+
+----
[EMAIL PROTECTED] generate-sources
+----
+
+  <<Note:>> <Some plugin languages such as Marmalade have different ways of 
specifying mojo level declarations.
+  Please refer to the specific plugin development documentation for more 
information.>
+
+  Once this is specified, it will automatically be registered when the goal is 
listed in the project POM, as described
+  previously.
+
+** Specifying a New Packaging
+
+  If your plugin is intended to provide a unique artifact type, then you will 
need to not only provide the goal to
+  package it with, but also a mapping of how the default lifecycle should 
behave.
+
+  This is currently achieved by adding a Plexus descriptor to your plugin (or 
modifying it if it already exists).
+  This file is <<<META-INF/plexus/components.xml>>> in the plugin JAR. The 
following is an example of configuring a
+  set of phases for the Plexus plugin itself to register the 
<<<plexus-application>>> type:
+
+----
+<components>
+  <component>
+    <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+    <role-hint>plexus-application</role-hint>
+    
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+    <configuration>
+      <phases>
+        <process-resources>resources:resources</process-resources>
+        <compile>compiler:compile</compile>
+        
<process-test-resources>resources:testResources</process-test-resources>
+        <test-compile>compiler:testCompile</test-compile>
+        <test>surefire:test</test>
+        <package>plexus:app</package>
+        <install>install:install</install>
+        <deploy>deploy:deploy</deploy>
+      </phases>
+    </configuration>
+  </component>
+</components>
+----
+
+  In this example, the <<<role-hint>>> is used to specify the packaging, and 
the <<<role>>> of
+  <<<org.apache.maven.lifecycle.mapping.LifecycleMapping>>> indicates this is 
a lifecycle mapping for that packaging.
+  Implementation is required, and while you can provide your own, the default 
given above should suit and standard case.
+
+  The phases to bind are listed in the configuration element, and each that is 
given can have one goal associated with
+  that phase for that particular packaging.
+
+  Once this is included in the JAR and the plugin is added to the project, the 
packaging will also be available from
+  that project.
+
+** Forking a Parallel Lifecycle
+
+  TODO
+
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to