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 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 :-)).

[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.