Maven - 如何包含空目录

2022-09-01 07:31:25

默认情况下,在生成过程中,maven 会删除空目录。
您是否知道是否可以在 pom 中指定一个参数来指示 maven 在生成的 target/test-classes 文件夹中包含空目录?


答案 1

根据这张票MRESOURCES-36,应该有一个元素,但仅适用于Maven Resources Plugin 2.3<includeEmptyDirs>

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

对于包含旧版资源插件的 Maven 版本:

在解决此问题之前,这是我已成功使用的解决方法。
将此插件元素添加到 中,然后更改 mkdir 任务中的 dir。project/build/pluginspom.xml

多个目录可以有多个元素。如果资源插件已经复制了目录,则该任务不执行任何操作。<mkdir>mkdir

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>create-empty-directory</id>
      <phase>process-classes</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <tasks>
          <mkdir dir="${basedir}/target/classes/empty" />
        </tasks>
      </configuration>
    </execution>
  </executions>
</plugin>

这最初来自openejb项目中的openejb-standalone pom.xml


答案 2

为什么在目标/测试类下需要空文件夹?

另一方面,您可以使用汇编插件在zip / tar.gz文件中创建空文件夹。

只需在程序集描述符中创建一个引用现有文件夹的条目(在本例中为 src/main/resources/bin...

<fileSet>
  <directory>src/main/resources/bin</directory>
  <outputDirectory>/logs</outputDirectory>
  <directoryMode>0755</directoryMode>
  <excludes>
    <exclude>*</exclude>
  </excludes>
</fileSet>

上述内容也适用于.tar.gz和 zip 文件。仅当创建.tar.gz文件时,才需要上述目录模式。

第二种可能性是在文件夹结构中创建一个空文件夹,该文件夹包含在程序集插件中(如zip,tar.gz等)。...顺便说一句:zip,tar.gz允许空文件夹。


推荐