Author: rafale
Date: Tue Sep 16 11:39:08 2008
New Revision: 696000

URL: http://svn.apache.org/viewvc?rev=696000&view=rev
Log:
Documentation of the create-from-project mojo using a property file

Added:
    
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt
   (with props)
Modified:
    
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-multi-module-project.apt
    
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-alternative-catalog.apt
    
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-batch.apt
    maven/archetype/trunk/archetype-plugin/src/site/apt/index.apt

Modified: 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-multi-module-project.apt
URL: 
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-multi-module-project.apt?rev=696000&r1=695999&r2=696000&view=diff
==============================================================================
--- 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-multi-module-project.apt
 (original)
+++ 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-multi-module-project.apt
 Tue Sep 16 11:39:08 2008
@@ -26,7 +26,7 @@
 ~~ NOTE: For help with the syntax of this file, see:
 ~~ http://maven.apache.org/doxia/references/apt-format.html
 
- * Create an archetype from a multi module project
+Create an archetype from a multi module project
 
    Creating an archetype for a multi module project is as simple as 
    {{{../advanced-usage.html}creating one for a mono module project}}.
@@ -37,7 +37,7 @@
    plugin some value in the archetype.filtered property.
 
 +--
-$ mvn archetype:create-from-project -Darchetype.filtered=java
+$ mvn archetype:create-from-project -Darchetype.filteredExtensions=java
 [INFO] Scanning for projects...
 [INFO] Reactor build order:
 [INFO]   archetype

Added: 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt
URL: 
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt?rev=696000&view=auto
==============================================================================
--- 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt
 (added)
+++ 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt
 Tue Sep 16 11:39:08 2008
@@ -0,0 +1,276 @@
+ ------
+ Create an archetype with a property file
+ ------
+ Raphaël Piéroni
+ ------
+ 16 September 2008
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License.  You may obtain a copy of the License at
+~~
+~~     http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied.  See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+Create an archetype with a property file
+
+    Creating an archetype using a property file is possible by defining a text
+    file containing the properties that will lead the archetype creation, and 
by
+    calling the archetype plugin with the command line property
+    <<<archetype.properties>>> giving it the path to the property file.
+
+    The directory above the would be archetype project:
+
++--
+$ tree
+.
+|____archetype.properties
+|____some-project
+| |____pom.xml
+| |____src
+| | |____main
+| | | |____groovy
+| | | | |____com
+| | | | | |____company
+| | | | | | |____App.groovy
+| | | |____java
+| | | | |____com
+| | | | | |____company
+| | | | | | |____App.java
+| | |____test
+| | | |____java
+| | | | |____com
+| | | | | |____company
+| | | | | | |____AppTest.java
+| | | |____resources
+| | | | |____App.properties
++--
+
+    The content of the property file:
+
++--
+$ cat archetype.properties
+archetype.groupId=my.group.id
+archetype.artifactId=archetype-with-properties
+archetype.version=2.0
+
+archetype.filteredExtensions=java
+archetype.languages=groovy
+
+an_additional_property=my specific value
++--
+
+    Creating the archetype:
+
++--
+$ cd some-project
+$ mvn archetype:create-from-project 
-Darchetype.properties=../archetype.properties
+[INFO] Scanning for projects...
+[INFO] Searching repository for plugin with prefix: 'archetype'.
+[INFO] ------------------------------------------------------------------------
+[INFO] Building some-project
+[INFO]    task-segment: [archetype:create-from-project] (aggregator-style)
+[INFO] ------------------------------------------------------------------------
+[INFO] Preparing archetype:create-from-project
+[INFO] ------------------------------------------------------------------------
+[INFO] Building some-project
+[INFO] ------------------------------------------------------------------------
+[INFO] No goals needed for project - skipping
+[INFO] Setting property: classpath.resource.loader.class => 
'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
+[INFO] Setting property: velocimacro.messages.on => 'false'.
+[INFO] Setting property: resource.loader => 'classpath'.
+[INFO] Setting property: resource.manager.logwhenfound => 'false'.
+[INFO] [archetype:create-from-project]
+[INFO] Setting default groupId: com.company
+[INFO] Setting default artifactId: some-project
+[INFO] Setting default version: 1.0-SNAPSHOT
+[INFO] Setting default package: com.company
+[INFO] Archetype created in target/generated-sources/archetype
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 2 seconds
+[INFO] Finished at: Tue Sep 16 19:42:06 CEST 2008
+[INFO] Final Memory: 8M/15M
+[INFO] ------------------------------------------------------------------------
+
+$ cd target/generated-sources/archetype/
+$ mvn install
+[INFO] Scanning for projects...
+[INFO] ------------------------------------------------------------------------
+[INFO] Building archetype-with-properties
+[INFO]    task-segment: [install]
+[INFO] ------------------------------------------------------------------------
+[INFO] [resources:resources]
+[INFO] Using default encoding to copy filtered resources.
+[INFO] [resources:testResources]
+[INFO] Using default encoding to copy filtered resources.
+[INFO] Setting property: classpath.resource.loader.class => 
'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
+[INFO] Setting property: velocimacro.messages.on => 'false'.
+[INFO] Setting property: resource.loader => 'classpath'.
+[INFO] Setting property: resource.manager.logwhenfound => 'false'.
+[INFO] [archetype:jar]
+[INFO] [archetype:add-archetype-metadata]
+[INFO] [archetype:integration-test]
+[INFO] [install:install]
+[INFO] Installing 
/private/tmp/archetypes/some-project/target/generated-sources/archetype/target/archetype-with-properties-2.0.jar
 to 
/Users/raphaelpieroni/.m2/repository/my/group/id/archetype-with-properties/2.0/archetype-with-properties-2.0.jar
+[INFO] [archetype:update-local-catalog]
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 5 seconds
+[INFO] Finished at: Tue Sep 16 19:43:57 CEST 2008
+[INFO] Final Memory: 10M/20M
+[INFO] ------------------------------------------------------------------------
++--
+
+    Using that archetype:
+
++--
+$ mvn archetype:generate -DarchetypeCatalog=local
+$ mvn archetype:generate -DarchetypeCatalog=local
+[INFO] Scanning for projects...
+[INFO] Searching repository for plugin with prefix: 'archetype'.
+[INFO] ------------------------------------------------------------------------
+[INFO] Building Maven Default Project
+[INFO]    task-segment: [archetype:generate] (aggregator-style)
+[INFO] ------------------------------------------------------------------------
+[INFO] Preparing archetype:generate
+[INFO] No goals needed for project - skipping
+[INFO] Setting property: classpath.resource.loader.class => 
'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
+[INFO] Setting property: velocimacro.messages.on => 'false'.
+[INFO] Setting property: resource.loader => 'classpath'.
+[INFO] Setting property: resource.manager.logwhenfound => 'false'.
+[INFO] [archetype:generate]
+[INFO] Generating project in Interactive mode
+[INFO] No archetype defined. Using maven-archetype-quickstart 
(org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
+Choose archetype:
+1: local -> archetype-with-properties (archetype-with-properties)
+Choose a number:  (1): 1
+Define value for groupId: : foo
+Define value for artifactId: : bar
+Define value for version:  1.0-SNAPSHOT: :
+Define value for package:  foo: :
+Confirm properties configuration:
+an_additional_property: my specific value
+groupId: foo
+artifactId: bar
+version: 1.0-SNAPSHOT
+package: foo
+ Y: : N
+Define value for an_additional_property:  my specific value: : my new value
+Define value for groupId: : my.new.group
+Define value for artifactId: : my-new-artifact
+Define value for version:  1.0-SNAPSHOT: :
+Define value for package:  my.new.group: :
+Confirm properties configuration:
+an_additional_property: my new value
+groupId: my.new.group
+artifactId: my-new-artifact
+version: 1.0-SNAPSHOT
+package: my.new.group
+ Y: :
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 58 seconds
+[INFO] Finished at: Tue Sep 16 19:51:09 CEST 2008
+[INFO] Final Memory: 8M/15M
+[INFO] ------------------------------------------------------------------------
++--
+
+    As you can see, the additional property is provided by default. As one want
+    to override the value, one just have to answer <<<N>>> to the first
+    confirmation, then the whole bunch of properties is proposed.
+
+    The tree of the generated project show that the only language recognised as
+    such is groovy. The property <<<archetype.languages>>> gives the list of 
the
+    languages. The languages are the directories in <<<src/main>>> and
+    <<<src/test>>> that have the capacity to contain a "packaged" directory
+    tree. This means that the <<<package>>> value is used to generate the new
+    directory for that language.
+
++--
+$ cd my-new-artifact/
+ tree
+.
+|____pom.xml
+|____src
+| |____main
+| | |____groovy
+| | | |____my
+| | | | |____new
+| | | | | |____group
+| | | | | | |____App.groovy
+| | |____java
+| | | |____com
+| | | | |____company
+| | | | | |____App.java
+| |____test
+| | |____java
+| | | |____com
+| | | | |____company
+| | | | | |____AppTest.java
+| | |____resources
+| | | |____App.properties
++--
+
+    The contents of both App.groovy and App.java shows that the only filtered
+    files are java files. The property <<<archetype.filteredExtensions>>> gives
+    the list of file extensions that permit the filtering. In the example, only
+    the files whose names ending with <<<.java>>> are filtered.
+
++--
+$ cat src/main/groovy/my/new/group/App.groovy
+package com.company
+
+class App
+{
+  def value = 'my specific value'
+}
+
+$ cat src/main/java/com/company/App.java
+package my.new.group;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+    String value = "my new value";
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}
++--
+
+    The languages and the filtered extensions are used even if that don't make
+    any sense. All the properties defined in the property file can be used in
+    as command line properties.
+
+    When undefined, the <<<archetype.languages>>> and 
<<<archetype.filteredExtensions>>>
+    properties are given sensible default:
+
+    * <<<archetype.languages>>> have: <<<java, xml, txt, groovy, cs, mdo, aj,
+       jsp, gsp, vm, html, xhtml, properties, .classpath, .project>>>. Notice
+       the dotted filtered extensions that contains the complete file names.
+
+    * <<<archetype.fillteredExtensions>>> have: <<<java, groovy, csharp, 
aspectj>>>.
+
+    []
\ No newline at end of file

Propchange: 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/create-with-property-file.apt
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-alternative-catalog.apt
URL: 
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-alternative-catalog.apt?rev=696000&r1=695999&r2=696000&view=diff
==============================================================================
--- 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-alternative-catalog.apt
 (original)
+++ 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-alternative-catalog.apt
 Tue Sep 16 11:39:08 2008
@@ -26,7 +26,7 @@
 ~~ NOTE: For help with the syntax of this file, see:
 ~~ http://maven.apache.org/doxia/references/apt-format.html
 
- * Generate project using an alternative catalog
+Generate project using an alternative catalog
 
    It is possible to use an alternative catalog as the internal one by defining
    the <<<archetypeCatalog>>> property to a specific value which can be one of:

Modified: 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-batch.apt
URL: 
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-batch.apt?rev=696000&r1=695999&r2=696000&view=diff
==============================================================================
--- 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-batch.apt 
(original)
+++ 
maven/archetype/trunk/archetype-plugin/src/site/apt/examples/generate-batch.apt 
Tue Sep 16 11:39:08 2008
@@ -26,7 +26,7 @@
 ~~ NOTE: For help with the syntax of this file, see:
 ~~ http://maven.apache.org/doxia/references/apt-format.html
 
- * Generate project in batch mode
+Generate project in batch mode
 
    It is possible to get rid of the interactivity of the archetype plugin
    by defining the <<<interactive>>> property to <<<false>>> or by using the -B

Modified: maven/archetype/trunk/archetype-plugin/src/site/apt/index.apt
URL: 
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/site/apt/index.apt?rev=696000&r1=695999&r2=696000&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-plugin/src/site/apt/index.apt (original)
+++ maven/archetype/trunk/archetype-plugin/src/site/apt/index.apt Tue Sep 16 
11:39:08 2008
@@ -33,7 +33,6 @@
  from an existing template called an archetype.
 
  It also allows the user to create an archetype from an existing project. 
- (<currently under development>)
 
 
 * Usage
@@ -80,18 +79,17 @@
 
    * {{{examples/create-multi-module-project.html}Create an archetype from a 
multi module project}}
 
-~~ TODO: The link on the following line doesn't work
-   * {{{#}Create an archetype with a property file}}
+   * {{{examples/create-with-property-file.html}Create an archetype with a 
property file}}
 
 ~~ TODO: The link on the following line doesn't work
    * {{{#}Handcrafting an archetype}} or features available to an archetype
-     when not created by <<<create-from-project>>>
+     when not created by <<<create-from-project>>> - TBD
 
 ~~ TODO: The link on the following line doesn't work
-   * {{{#}Generate a sub module from an archetype}}
+   * {{{#}Generate a sub module from an archetype}} - TBD
 
 ~~ TODO: The link on the following line doesn't work
-   * {{{#}Create an archetype in interactive mode}}
+   * {{{#}Create an archetype in interactive mode}} - TBD
 
   []
 


Reply via email to