Author: bimargulies Date: Mon Nov 14 14:26:16 2011 New Revision: 1201722 URL: http://svn.apache.org/viewvc?rev=1201722&view=rev Log: ARCHETYPE-390: Several parameters of the create-from-project mojo lack documentation o added a barge-load of documentation to the create-from-project mojo.
Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java URL: http://svn.apache.org/viewvc/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java?rev=1201722&r1=1201721&r2=1201722&view=diff ============================================================================== --- maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java (original) +++ maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateArchetypeFromProjectMojo.java Mon Nov 14 14:26:16 2011 @@ -40,7 +40,47 @@ import java.util.List; import java.util.Properties; /** - * Creates an archetype project from the current project, with a <code>basic</code> integration-test. + * <p> + * Creates an archetype project from the current project. + * </p> + * <p> + * This goal reads your source and resource files, the values of its parameters, + * and properties you specify in a <code>.property</code> file, and uses them to + * create a Maven archetype project using the maven-archetype packaging. + * If you build the resulting project, it will create the archetype. You can then + * use this archetype to create new projects that resemble the original. + * </p> + * <p> + * The maven-archetype-plugin uses Velocity to expand template files, and this documentation + * talks about 'Velocity Properties', which are values substituted into Velocity templates. + * See <a href="http://velocity.apache.org/engine/devel/user-guide.html">The Velocity User's Guide</a> + * for more information. + * </p> + * <p> + * This goal modifies the text of the files of the current project to form the Velocity template files + * that make up the archetype. + * </p> + * <dl> + * <dt>GAV</dt><dd>The GAV values for the current project are replaced by properties: groupId, artifactId, and version. + * The user chooses new values for these when generating a project from the archetype.</dd> + * <dt>package</dt><dd>All the files under one specified Java (or cognate) package are relocated to a project + * that the user chooses when generating a project. References to the class name are replaced by a property reference. For + * example, if the current project's sources are in the package <code>org.apache.saltedpeanuts</code>, then + * any example of the string <code>org.apache.saltedpeanuts</code> is replaced with the Velocity property + * reference <code>${packageName}</code>. When the user generates a project, this is in turn replaced by + * his or her choice of a package. + * </dd> + * <dt>custom properties</dt><dd>You may identify additional strings that should be replaced by parameters. + * To add custom properties, you must use the <code>propertyFile</code> parameter to specify a property file. + * See the documentation for <code>propertyFile</code> for the details. + * </dl> + * <p> + * Note that you may need to edit the results of this goal. This goal has no way to exclude unwanted files, + * or add copyright notices to the Velocity templates, or add more complex elements to the archetype metadata file. + * </p> + * <p> + * This goal also generates a simple integration-test that exercises the generated archetype. + * </p> * * @author rafale * @requiresProject true @@ -107,7 +147,9 @@ public class CreateArchetypeFromProjectM */ private boolean preserveCData = false; - /** @parameter expression="${localRepository}" */ + /** @parameter expression="${localRepository}" + * @readonly + **/ private ArtifactRepository localRepository; /** @@ -128,7 +170,39 @@ public class CreateArchetypeFromProjectM private MavenProject project; /** - * The property file that holds the plugin configuration. + * The property file that holds the plugin configuration. If this is provided, then + * the plugin reads properties from here. The properties in here can be standard + * properties listed below or custom properties for this archetype. The standard properties + * are below. Several of them overlap parameters of this goal; it's better to just + * set the parameter. + * + * <dl><dt>package</dt><dd>See the packageName parameter.</dd> + * <dt>archetype.languages</dt><dd>See the archetypeLanguages parameter.</dd> + * <dt>groupId</dt><dd>The default groupId of the generated project.</dd> + * <dt>artifactId</dt><dd>The default artifactId of the generated project.</dd> + * <dt>version</dt><dd>The default version of the generated project.</dd> + * <dt>archetype.filteredExtensions</dt><dd>See the filteredExensions parameter.</dd> + * </dl> + * <strong>Custom Properties</strong> + * <p> + * Custom properties allow you to replace some constant values in the project's files + * with Velocity macro references. When a user generates a project from your archetype + * he or she gets the opportunity to replace the value from the source project. + * </p> + * <p> + * Custom property names <strong>may not contain the '.' character</strong>. + * </p> + * <p> + * For example, if you include a line like the following in your property file: + * <pre> + * cxf-version=2.5.1-SNAPSHOT + * </pre> + * the plugin will search your files for the string <pre>2.5.1-SNAPSHOT</pre> and + * replace them with references to a velocity macro <pre>cxf-version</pre>. It will + * then list <pre>cxf-version</pre> as a <pre>requiredProperty</pre> in the + * archetype-metadata.xml, with <pre>2.5.1-SNAPSHOT</pre> as the default value. + * </p> + * * * @parameter expression="${archetype.properties}" */ @@ -152,7 +226,11 @@ public class CreateArchetypeFromProjectM /** @parameter expression="${testMode}" */ private boolean testMode; - /** @parameter expression="${packageName}" */ + /** + * The package name for Java source files to be incorporated in the archetype and + * and relocated to the package that the user selects. + * + * @parameter expression="${packageName}" */ private String packageName; //Find a better way to resolve the package!!! enforce usage of the configurator /**