How to create empty folders with maven archetype?

Christopher Klewes picture Christopher Klewes · May 7, 2010 · Viewed 17.4k times · Source

There is an existing issue for this approach, located on Codehaus JIRA #ARCHETYPE-57, but all instructions listed in this ticket failed for me. Also the blog post of marekdec How to get maven archetype to generate empty directories fails for me.

The trick within the archetype.xml with the trailing / doesnt works for me:

<resources>
  <resource>src/main/webapp/</resource>

Unable to find resource 'archetype-resources/src/main/webapp/'

Also the fileSet directory in archetype-metadata.xml does not work for me:

<fileSet filtered="true" encoding="UTF-8">
 <directory>src/main/webapp/</directory>
</fileSet>

I use the following maven-archetype-plugin to create my custom archetype.

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:create

Is there any other solution? Or did i miss something? Thanks

Answer

Pascal Thivent picture Pascal Thivent · May 7, 2010

I did a quick test and... it worked for me. First, I created an archetype:

$ mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype \
                            -DgroupId=com.stackoverflow \
                            -DartifactId=Q2786966 \
                            -Dversion=1.0-SNAPSHOT \

I renamed the archetype.xml into archetype-metadata.xml (the former is for Archetype 1.0.X, the later is for Archetype 2.0.X) so the project looks like:

$ tree .
.
├── pom.xml
└── src
    └── main
        └── resources
            ├── archetype-resources
            │   ├── pom.xml
            │   └── src
            │       ├── main
            │       │   └── java
            │       │       └── App.java
            │       └── test
            │           └── java
            │               └── AppTest.java
            └── META-INF
                └── maven
                    └── archetype-metadata.xml

And archetype-metadata.xml contains:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="Q2786966">
  <fileSets>
    <fileSet filtered="true" encoding="UTF-8">
      <directory>src/main/webapp</directory>
    </fileSet>
    <fileSet filtered="true" packaged="true">
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.java</include>
      </includes>
    </fileSet>
  </fileSets>
</archetype-descriptor>

Then I installed the archetype and used it to create a project:

$ mvn install
$ cd ~/tmp
$ mvn archetype:generate -B -DarchetypeGroupId=com.stackoverflow \
                            -DarchetypeArtifactId=Q2786966 \
                            -DarchetypeVersion=1.0-SNAPSHOT \
                            -DgroupId=my.group \
                            -DartifactId=my-artifact \
                            -Dversion=1.0-SNAPSHOT

And the resulting project looks like this:

$ tree my-artifact/
my-artifact/
├── pom.xml
└── src
    └── main
        ├── java
        │   └── my-group
        │       └── App.java
        └── webapp

The empty webapp directory is there.