How to create empty folders with maven archetype?

后端 未结 3 1326
伪装坚强ぢ
伪装坚强ぢ 2021-02-01 20:54

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 Ho

相关标签:
3条回答
  • 2021-02-01 21:31

    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.

    0 讨论(0)
  • 2021-02-01 21:31

    I met the same problem with the first answer to this question. Reconfiguring the maven-resources-plugin.

    According to this ticket MRESOURCES-36, there should be a <includeEmptyDirs> element, but only for Maven Resources Plugin 2.3.

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.3</version>
      <configuration>
        <includeEmptyDirs>true</includeEmptyDirs>
      </configuration>
    </plugin>
    
    0 讨论(0)
  • 2021-02-01 21:45

    I solved this issue by adding the following configuration to the archetypes pom.xml build configuration.

    Assuming your archetype-metadata.xml configuration file's filesets is as follows:

    <fileSet encoding="UTF-8">
     <directory>src</directory>
      <includes>
       <include>**/**</include>
      </includes>
    </fileSet>
    

    Add this to your pom.xml, not the one included with the archetype, the actual project pom.xml

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.3</version>
      <configuration>
        <includeEmptyDirs>true</includeEmptyDirs>
      </configuration>
    </plugin>
    

    The xml configuration line which does the magic is

    <includeEmptyDirs>true</includeEmptyDirs>
    

    The full configuration will look as follows

    <project ...>
    ...
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <includeEmptyDirs>true</includeEmptyDirs>
                    </configuration>
                </plugin>
    
            </plugins>
        </build>
    
    </project>
    
    0 讨论(0)
提交回复
热议问题