| ----- |
| Archetypeng - Creation |
| ----- |
| The Maven Team |
| ----- |
| |
| Creation |
| |
| Creating an archetype from a project involves two steps: |
| |
| * the configuration of the archetype |
| |
| * and the effective creation based on the collected information. |
| |
| [] |
| |
| At the end of these steps, you have a Maven 2 archetype created in the |
| target/generated-sources/archetypeng directory. |
| |
| It is possible to use the generation plugin in {{{#Batch}batch}} mode. |
| |
| * Archetype configuration |
| |
| During this step, you are successivly prompted to: |
| |
| * define the archetype's groupId, artifactId and version, |
| |
| * define the common properties' values (used for reverse templating), |
| |
| * define the archetype's properties and values (used for reverse templating), |
| |
| * confirm the configuration. |
| |
| [] |
| |
| A properety file containing the archetype definition and the archetype's |
| properties is written at the end of this step. |
| |
| The packageName property provides a default value of the guessed package of |
| the project based on the packages of the project's sources. |
| |
| * Archetype creation |
| |
| During this step, the plugin creates a Maven 2 archetype based on the |
| project's sources and pom and on the configuration collected. |
| |
| |
| * Example of use |
| |
| To create an archetype, call <mvn archetypeng:create-from-project>. |
| |
| |
| +-- |
| [rafale@fixe test-start]$ tree |
| . |
| |-- pom.xml |
| `-- src |
| |-- main |
| | `-- java |
| | `-- org |
| | `-- codehaus |
| | `-- mojo |
| | `-- archetypeng |
| | `-- test |
| | `-- start |
| | `-- App.java |
| `-- test |
| `-- java |
| `-- org |
| `-- codehaus |
| `-- mojo |
| `-- archetypeng |
| `-- test |
| `-- start |
| `-- AppTest.java |
| |
| 17 directories, 3 files |
| +-- |
| |
| Here is a sample project (the one generated by the |
| {{{generation.html}generation}} :-)). |
| |
| +-- |
| [rafale@fixe test-start]$ mvn archetypeng:create-from-project |
| [INFO] Scanning for projects... |
| [INFO] Searching repository for plugin with prefix: 'archetypeng'. |
| [INFO] artifact org.codehaus.mojo:maven-archetypeng-plugin: checking for updates from central |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Building test-start |
| [INFO] task-segment: [archetypeng:create-from-project] |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Preparing archetypeng:create-from-project |
| +-- |
| |
| The first step of the creation: <configure-creation> |
| |
| +-- |
| [INFO] [archetypeng:configure-creation] |
| Define value for archetype.groupId: org.codehaus.mojo.archetypeng.test: : |
| Define value for archetype.artifactId: test-start-archetype: : |
| Define value for archetype.version: 1.0-SNAPSHOT: : |
| Define value for groupId: org.codehaus.mojo.archetypeng.test: : |
| Define value for artifactId: test-start: : |
| Define value for version: 1.0-SNAPSHOT: : |
| +-- |
| |
| Archetype definition (archetype.*) and common properties are defined using |
| the proposed default values. |
| |
| +-- |
| Add a new custom property Y: : Y |
| Define property key: aProperty |
| Define value for aProperty: : String searched in the sources |
| Add a new custom property Y: : N |
| +-- |
| |
| A custom property is added to the project creation. |
| |
| +-- |
| Confirm archetype configuration: |
| archetype.groupId: org.codehaus.mojo.archetypeng.test |
| archetype.artifactId: test-start-archetype |
| archetype.version: 1.0-SNAPSHOT |
| package: org.codehaus.mojo.archetypeng.test.start |
| version: 1.0-SNAPSHOT |
| groupId: org.codehaus.mojo.archetypeng.test |
| aProperty: String searched in the sources |
| artifactId: test-start |
| Y: : Y |
| +-- |
| |
| The archetype configuration is confirmed. |
| |
| +-- |
| [INFO] [archetypeng:create-archetype] |
| +-- |
| |
| The second step do the work without any comment. |
| |
| +-- |
| [INFO] [archetypeng:create-from-project] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESSFUL |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 29 seconds |
| [INFO] Finished at: Mon Mar 12 19:09:52 CET 2007 |
| [INFO] Final Memory: 10M/24M |
| [INFO] ------------------------------------------------------------------------ |
| +-- |
| |
| The resuting project is created in the target directory. |
| |
| +-- |
| [rafale@fixe test-start]$ tree target/generated-sources/archetypeng |
| target/generated-sources/archetypeng |
| |-- pom.xml |
| `-- src |
| `-- main |
| `-- resources |
| |-- META-INF |
| | `-- maven |
| | `-- archetype.xml |
| `-- archetype-resources |
| |-- pom.xml |
| `-- src |
| |-- main |
| | `-- java |
| | `-- App.java |
| `-- test |
| `-- java |
| `-- AppTest.java |
| |
| 11 directories, 5 files |
| +-- |
| |
| * {Batch} mode |
| |
| To enable the batch mode and remove the prompts, just run |
| <mvn archetypeng:create-from-project -B>. |
| |
| The batch mode wiil need the same answers as the interactive mode. These |
| answers are provided in a property file named archetype.properties in the |
| execution directory or set using the command line property |
| <-Darchetype.properties=path/to/archetype.properties>. |
| |
| Here is an example of archetype.properties file (the one generated by the |
| interactive creation :-)). |
| |
| +-- |
| [rafale@fixe test-start]$ cat archetype.properties |
| # |
| #Mon Mar 12 19:09:51 CET 2007 |
| version=1.0-SNAPSHOT |
| package=org.codehaus.mojo.archetypeng.test.start |
| archetype.groupId=org.codehaus.mojo.archetypeng.test |
| archetype.artifactId=test-start-archetype |
| groupId=org.codehaus.mojo.archetypeng.test |
| artifactId=test-start |
| archetype.version=1.0-SNAPSHOT |
| +-- |
| |
| Here is the plugin execution. |
| |
| +-- |
| [rafale@fixe test-start]$ tree |
| . |
| |-- archetype.properties |
| |-- pom.xml |
| `-- src |
| |-- main |
| | `-- java |
| | `-- org |
| | `-- codehaus |
| | `-- mojo |
| | `-- archetypeng |
| | `-- test |
| | `-- start |
| | `-- App.java |
| `-- test |
| `-- java |
| `-- org |
| `-- codehaus |
| `-- mojo |
| `-- archetypeng |
| `-- test |
| `-- start |
| `-- AppTest.java |
| |
| 17 directories, 4 files |
| +-- |
| |
| Ensure the property file exists. |
| |
| +-- |
| [rafale@fixe test-start]$ mvn archetypeng:create-from-project -B |
| [INFO] Scanning for projects... |
| [INFO] Searching repository for plugin with prefix: 'archetypeng'. |
| [INFO] artifact org.codehaus.mojo:maven-archetypeng-plugin: checking for updates from central |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Building test-start |
| [INFO] task-segment: [archetypeng:create-from-project] |
| [INFO] ---------------------------------------------------------------------------- |
| [INFO] Preparing archetypeng:create-from-project |
| [INFO] [archetypeng:configure-creation] |
| [INFO] [archetypeng:create-archetype] |
| [INFO] [archetypeng:create-from-project] |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESSFUL |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 16 seconds |
| [INFO] Finished at: Mon Mar 12 19:13:22 CET 2007 |
| [INFO] Final Memory: 10M/24M |
| [INFO] ------------------------------------------------------------------------ |
| +-- |
| |
| The project tree is the same as in the interactive mode. |