21

这种方法存在一个现有问题,位于Codehaus JIRA #ARCHETYPE-57上,但此票证中列出的所有说明对我来说都失败了。marekdec How to get maven archetype to generate empty directory的博客文章对我来说也失败了。

archetype.xml带有尾随的技巧/对我不起作用:

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

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

中的fileSet目录archetype-metadata.xml也不适合我:

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

我使用以下 maven-archetype-plugin 来创建我的自定义原型。

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

还有其他解决方案吗?还是我错过了什么?谢谢

4

3 回答 3

23

我做了一个快速测试,并且......它对我有用。首先,我创建了一个原型:

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

我重命名了archetype.xmlinto archetype-metadata.xml(前者用于 Archetype 1.0.X,后者用于 Archetype 2.0.X)所以项目看起来像:

$树。
.
├── pom.xml
└── 源
    └── 主要
        └── 资源
            ├── 原型资源
            │ ├── pom.xml
            │ └── src
            │ ├── 主要
            │ │ └── java
            │ │ └── App.java
            │ └── 测试
            │ └── java
            │ └── AppTest.java
            └── META-INF
                └── 行家
                    └── 原型元数据.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

生成的项目如下所示:

$树我的神器/
我的神器/
├── pom.xml
└── 源
    └── 主要
        ├── java
        │ └── 我的群
        │ └── App.java
        └── 网页应用

空的 webapp 目录就在那里。

于 2010-05-07T13:37:25.430 回答
18

我通过将以下配置添加到原型 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>
于 2012-03-23T15:52:46.583 回答
6

我在这个问题的第一个答案中遇到了同样的问题。重新配置 maven-resources-plugin。

根据这张票 MRESOURCES-36,应该有一个 <includeEmptyDirs>元素,但仅适用于 Maven 资源插件 2.3。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <includeEmptyDirs>true</includeEmptyDirs>
  </configuration>
</plugin>
于 2011-08-17T18:29:29.450 回答