此方法存在一个问题,位于Codehaus JIRA #ARCHETYPE-57,但此故障单中列出的所有说明均未通过。 marekdec How to get maven archetype to generate empty directories的博文也不适合我。
结尾archetype.xml
的{{1}}中的技巧对我不起作用:
/
<resources>
<resource>src/main/webapp/</resource>
Unable to find resource 'archetype-resources/src/main/webapp/'
中的fileSet
目录也不适用于我:
archetype-metadata.xml
我使用以下maven-archetype-plugin来创建我的自定义原型。
<fileSet filtered="true" encoding="UTF-8">
<directory>src/main/webapp/</directory>
</fileSet>
还有其他解决方案吗?还是我错过了什么?感谢
答案 0 :(得分:21)
我做了一个快速测试......它对我有用。首先,我创建了一个原型:
$ mvn archetype:generate -B -DarchetypeArtifactId=maven-archetype-archetype \
-DgroupId=com.stackoverflow \
-DartifactId=Q2786966 \
-Dversion=1.0-SNAPSHOT \
我将archetype.xml
重命名为archetype-metadata.xml
(前者为Archetype 1.0.X,后者为Archetype 2.0.X),因此项目如下:
$ 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
archetype-metadata.xml
包含:
<?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>
然后我安装了原型并用它来创建一个项目:
$ 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
结果项目如下所示:
$ tree my-artifact/ my-artifact/ ├── pom.xml └── src └── main ├── java │ └── my-group │ └── App.java └── webapp
空的webapp目录就在那里。
答案 1 :(得分:10)
我通过将以下配置添加到archetypes pom.xml构建配置来解决了这个问题。
假设您的archetype-metadata.xml配置文件的文件集如下:
<fileSet encoding="UTF-8">
<directory>src</directory>
<includes>
<include>**/**</include>
</includes>
</fileSet>
将此添加到您的pom.xml,而不是原型中包含的那个,实际项目pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
</plugin>
执行魔术的xml配置行是
<includeEmptyDirs>true</includeEmptyDirs>
完整配置如下所示
<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>
答案 2 :(得分:5)
我对这个question的第一个答案遇到了同样的问题。重新配置maven-resources-plugin。
根据此票MRESOURCES-36,应该有一个&lt; includeEmptyDirs>
元素,但仅适用于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>