Hi,
thank you for all the helpful tips about where to look for creating archetypes. I am summarizing what I learned in a step-by-step guide below:

The only question that I have not been able to solve is how to use instruct an archetype to create an EMPTY directory (<directory> tag does not work).

--------------------------------------------------------------------------------------------------------
H O W T O C R E A T E A N A R C H E T Y P E
--------------------------------------------------------------------------------------------------------

1. Create a new project.
add the directories:
   src/main/resources/META-INF              //will hold archetype.xml
src/main/resources/archetype-resources //will hold the pom.xml and source tree that need to be copied

2. Create a POM for the archetype, e.g.

<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>my.groupId<groupId>
 <artifactId>my-archetype-id</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>maven-plugin</packaging>
</project>

3. The file structure for your archetype must be located in the
directory: src/main/resources/META-INF and src/main/resources/archetype-resources

4. create an archetype descriptor in a file called archetype.xml and place it in:
src/main/resources/META-INF/pom.xml
Note that <allowPartial>true</allowPartial> makes it possible to run the archetype creation on an existing project.

for example:

<archetype>
 <id>my-archetype-id</id>
 <allowPartial>false</allowPartial>
 <sources>
    <source>src/main/java/App.java</source>
 </sources>
 <testSources>
   <source>src/test/java/AppTest.java</source>
 </testSources>
 <siteResources>
   <resource>src/site/apt/index.apt</resource>
 </siteResources>
</archetype>

You can select from the following tags:
<sources> = src/main/java
<resources> = src/main/resources
<test-sources> = src/test/java
<test-resources> = src/test/resources
<site-resources> = src/site

(I have not been able to find a way to create empty directories, though).

5. create the pom.xml that the archetype should create and place it
in:
src/main/resources/archetype-resources/pom.xml

for example:
<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd";>
 <modelVersion>4.0.0</modelVersion>
 <groupId>${groupId}</groupId>
 <artifactId>${artifactId}</artifactId>
 <packaging>jar</packaging>
 <version>${version}</version>
 <name>A custom project</name>
 <url>http://www.myorganization.org</url>
 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <scope>test</scope>
   </dependency>
 </dependencies>
</project>

6. run mvn install
This installs your archetype locally.

7. to create a new project based on your archetype use:
mvn archetype:create -DarchetypeGroupId=my.groupId -DarchetypeArtifactId=my-archetype-id -DarchetypeVersion=1.0-SNAPSHOT -DgroupId=my.organization -DartifactId=myArtifactId
Note: Don't forget -DarchetypeVersion !


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to