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]