Author: jvanzyl
Date: Sat May 14 06:05:29 2005
New Revision: 170139
URL: http://svn.apache.org/viewcvs?rev=170139&view=rev
Log:
o adding john's plugin tool refactoring document
Added:
maven/components/trunk/maven-site/src/site/apt/proposals/
maven/components/trunk/maven-site/src/site/apt/proposals/plugin-tool-refactoring.apt
Added:
maven/components/trunk/maven-site/src/site/apt/proposals/plugin-tool-refactoring.apt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/proposals/plugin-tool-refactoring.apt?rev=170139&view=auto
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/proposals/plugin-tool-refactoring.apt
(added)
+++
maven/components/trunk/maven-site/src/site/apt/proposals/plugin-tool-refactoring.apt
Sat May 14 06:05:29 2005
@@ -0,0 +1,66 @@
+ ---
+ Refactoring Proposal: Accommodating Generators for Multiple Plugin Types
+ ---
+ John Casey
+ ---
+ 09-Feb-2005
+ ---
+
+*Abstract
+
+ Propose changing the structure of maven-plugin-tools to accommodate multiple
+ plugin languages and their needs during the descriptor, etc. generation
+ process. Details below.
+
+*Refactor Details
+
+ [[1]] Move the existing project (maven-plugin-tools) to
+ <<<maven-plugin-tools/maven-plugin-tools-java>>>. Adjust dependencies
on
+ this library accordingly within maven-components.
+
+ [[2]] Create other plugin-tools libraries to accommodate generation needs for
+ other languages, as needed.
+
+ The first use-case of this is the descriptor generator for
+ marmalade-based mojos. Since we don't want the "normal" plugin tools
+ to depend on marmalade, etc. we need to make the concept of
plugin-tools
+ abstract, and provide a concrete implementation for the java language,
+ as well as marmalade.
+
+ [[3]] Create plugin-tools root pom if needed for inheriting common values...
+
+ I don't anticipate needing this initially, but if there is some
question
+ of consistency wrt this, we can certainly provide one.
+
+ [[4]] Create common API for use in all generator libraries. This will define
+ the interface for a mojo descriptor (and other) generator. Therefore,
it
+ will require splitting the responsibility of the old
PluginDescriptorGenerator
+ from what is to be the maven-plugin-tools-java library into two pieces:
+
+ - Section covered by the AbstractGenerator code will be the complete
new
+ generator for java. It will probably be further abstracted as an
+ interface for other language implementations to follow, and then
itself
+ made into a concrete, instantiable implementation. The interface will
+ define the new Reader/Source role of this class, used to produce
+ MojoDescriptor instances from the project source files.
+
+ - Specifics handled by the PluginDescriptorGenerator (and others) will
+ be factored into the common API, and generalized as a Writer/Sink
role,
+ used to generate one or more derivative files from the
MojoDescriptors
+ discovered by the set of Reader/Sources.
+
+ Once this split is accomplished, an additional class will be created to
+ act as a managing component for all generators registered in plexus. It
+ will require a mapping of Source-language->Source-instance where each
+ Source is a plexus component. Unless/until we have some smarter way of
+ specifying a plugin language as a means of singling out one Source for
+ the project, this manager component will simply iterate through all
+ Source instances, collect the MojoDescriptors from each, wrap them in
+ MavenMojoDescriptors with the component-factory specified == to the
+ Source language, and aggregate the resulting MavenMojoDescriptors in
+ some Collection.
+
+ Finally, the Source manager returns the aggregated result of all
Sources
+ to the calling mojo. The mojo will be responsible for digesting the
+ MavenMojoDescriptors into the requisite files.
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]