brett 2005/04/07 23:10:09
Modified: maven-site/src/site/xdoc developing-plugins-with-marmalade.xml Log: review the marmalade document Revision Changes Path 1.3 +55 -49 maven-components/maven-site/src/site/xdoc/developing-plugins-with-marmalade.xml Index: developing-plugins-with-marmalade.xml =================================================================== RCS file: /home/cvs/maven-components/maven-site/src/site/xdoc/developing-plugins-with-marmalade.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- developing-plugins-with-marmalade.xml 8 Apr 2005 05:54:52 -0000 1.2 +++ developing-plugins-with-marmalade.xml 8 Apr 2005 06:10:09 -0000 1.3 @@ -27,70 +27,75 @@ <body> <section name="Developing Plugins with Marmalade"> <p> - NOTE: Compare this tutorial to <a href="http://maven.apache.org/using/developing-plugins.html">Developing + NOTE: Compare this tutorial to + <a href="http://maven.apache.org/using/developing-plugins.html">Developing Plugins</a> from the Maven 1.0 website. Marmalade is meant to be quite similar to Jelly in its syntax, so this process should be very familiar to Maven 1.0 plugin developers. </p> + <p> + If you need some background on how plugins fit into the execution model of Maven 2.0, try reading the + <a href="architecture.html">Maven 2.0 Architecture</a>. + </p> - <subsection name="Background"> + <subsection name="Graduating from Jelly: Plugins in Marmalade"> <p> - Each of the various steps in a given Maven 2.0 build corresponds to one plugin executing. - Plugins have access to the common infrastructure of the core API, along with the basic information - about the current project being built. Using these facilities, each plugin executes one simple, - repeatable step in the build. It is from these simple building blocks that even the most - complex, powerful build processes are constructed. + Beginning in Maven 2.0, plugins can be implemented in various languages. While our initial + technology preview will only offer support for these Marmalade and Java, we will eventually add + support for additional languages, possibly including Beanshell/Janino, Javascript, and more. </p> <p> - Beginning in Maven 2.0, plugins can be implemented in various languages, ranging from pure Java - to Marmalade - a next-generation Jelly-like XML language - and beyond. While our initial - technology preview will only offer support for these two languages, we will eventually add - support for additional languages, possibly including Beanshell/Janino, Javascript, and more. + Marmalade is a next-generation Jelly-like XML language, and was chosen for early inclusion in Maven 2.0 to + ease migration from Maven 1.0, and to provide a way to incorporate Ant scripts into a build project. </p> <p> - For more information on how plugins fit into the execution model of Maven 2.0, try reading - <a href="architecture.html">Maven 2.0 Architecture</a>. + Marmalade currently has basic syntax compatibility with Jelly, and some measure of Jelly taglib + compatibility... and this support will continue to improve as Marmalade matures. As such, Marmalade can allow + the plugin developer the freedom to concentrate on porting between project models and core facilities, rather + than worrying about changing implementation languages. </p> - </subsection> - <subsection name="Graduating from Jelly: Plugins in Marmalade"> <p> - For those Maven 1.x users who have implemented their own plugins using Jelly, Marmalade can be - an extremely powerful language for porting to Maven 2.0. Marmalade currently has basic syntax - compatibility with Jelly, and some measure of Jelly taglib compatibility...and this support - will continue to improve as Maven 2.0 matures. As such, Marmalade can allow the plugin developer - the freedom to concentrate on porting between project models and core facilities, rather than - worrying about changing implementation languages. + Marmalade is still only a fledgling project, and while it's core engine is sophisticated and mature, it's + support for Jelly and other taglibs is still growing at a brisk pace. In order to provide as much Jelly + functionality out-of-the-box to Maven 2.0 users, Marmalade has an available compatibility layer for Jelly, + which will allow the user to embed Jelly within Marmalade for the taglibs that have not yet been ported to + native Marmalade. </p> <p> - Like Maven 2.0 itself, Marmalade is somewhat of a fledgling project. That is, while it's core - engine is fairly sophisticated and mature, it's support for Jelly and other taglibs is still - growing at a brisk pace. In order to provide as much Jelly functionality out-of-the-box to Maven 2.0 - users, Marmalade has an available compatibility layer for Jelly, which will allow the user - to embed Jelly within Marmalade for the taglibs that have not yet been ported to native Marmalade. + For those Maven 1.x users who have implemented their own plugins using Jelly, Marmalade can be + an extremely powerful language for porting to Maven 2.0. </p> - <p>For more information on Marmalade, see the <a href="http://marmalade.codehaus.org">Marmalade website.</a> + <p>For more information on Marmalade, see the + <a href="http://marmalade.codehaus.org">Marmalade website.</a> + </p> </subsection> - + <subsection name="Marmalade Plugin Basics"> <p> A plugin implemented in Marmalade can contain the following: <ul> - <li>[Required] One or more Marmalade scripts, each in a file with the extension <code>.mmld</code></li> + <li>[Required] One or more Marmalade scripts, each in a file with the extension + <code>.mmld</code> + </li> <li> [Optional] One or more Marmalade tag libraries, each consisting of: <ul> - <li>One or more implementations of MarmaladeTag - <li>An implementation of <code>MarmaladeTagLibrary</code>, the constructor of which registers + <li>One or more implementations of MarmaladeTag</li> + <li>An implementation of + <code>MarmaladeTagLibrary</code>, the constructor of which registers each MarmaladeTag implementation to a tag name (for use in scripts) + </li> </ul> </li> <li> - [Required] A <code>pom.xml</code> for building the plugin, which contains a script source directory - resembling <code><![CDATA[<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>]]> + [Required] A + <code>pom.xml</code> for building the plugin, which contains a script source directory + resembling + <code><![CDATA[<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>]]></code> </li> <li>[Optional] Plugin resources to be used from within the plugin's scripts (available on the classpath)</li> <li>[Optional] Other Java sources, which can be accessed from the plugin's scripts</li> @@ -98,7 +103,8 @@ </p> <p> - Each <code>.mmld</code> script file must provide the same basic structural elements, which define it + Each + <code>.mmld</code> script file must provide the same basic structural elements, which define it as a Maven 2.0 plugin, and provide essential metadata. This metadata is used to: <ul> <li>Inject project and environmental information into the plugin (parameters)</li> @@ -148,7 +154,8 @@ source directory in which to find script sources. </p> <p> - In a new directory, create a <code>pom.xml</code> file like so: + In a new directory, create a + <code>pom.xml</code> file like so: </p> <source><![CDATA[<project> <modelVersion>4.0.0</modelVersion> @@ -195,8 +202,10 @@ goal within the build system, so you may need several scripts. </p> <p> - Since this is in fact a Hello World plugin, your script will simply output <code>Hello, World</code> - to the screen. Create a script in <code>src/main/scripts/hello.mmld</code> with the following contents: + Since this is in fact a Hello World plugin, your script will simply output + <code>Hello, World</code> + to the screen. Create a script in + <code>src/main/scripts/hello.mmld</code> with the following contents: </p> <source><![CDATA[ <mojo xmlns="marmalade:mojo"> @@ -260,12 +269,15 @@ </mojo> ]]></source> <p> - Note the additional element in this parameter declaration: <code>default</code> specified a default + Note the additional element in this parameter declaration: + <code>default</code> specified a default salutation in case the user doesn't need or want to customize the plugin. </p> <p> - Now, to make use of the new parameter. Inside the <code><![CDATA[<c:out/>]]></code> action, simply - write out the customizable salutation instead of the stock phrase <code>Hello</code>: + Now, to make use of the new parameter. Inside the + <code><![CDATA[<c:out/>]]></code> action, simply + write out the customizable salutation instead of the stock phrase + <code>Hello</code>: </p> <source><![CDATA[ <c:out xmlns:c="marmalade:core">${salutation}, World.</c:out> @@ -287,7 +299,8 @@ <p> Users of this plugin can also customize the salutation for their project and avoid having to specify it on - the command line each time. All they have to do is create a plugin entry in their <code>pom.xml</code> + the command line each time. All they have to do is create a plugin entry in their + <code>pom.xml</code> similar to: </p> <source><![CDATA[ @@ -314,13 +327,6 @@ ]]></source> </subsection> </section> - - <section name="Getting More Information"> - <p> - More information about using Marmalade to write Maven 2.0 plugins will be forthcoming, as we - flesh out both Marmalade and the Maven 2.0 platform. - </p> - </section> - </body> + </body> </document>