Maven RPM 插件中的可选映射部分?

Optional mapping sections in Maven RPM plugin?

我有一个 Maven RPM 插件映射:

<mapping>
  <directory>/etc/myconfig</directory>
  <configuration>true</configuration>
  <sources>
    <source>
      <location>${project.build.directory}</location>
      <includes>
        <include>*.conf</include>
      </includes>
    </source>
  </sources>
</mapping>

但是,根据打包过程,/etc 中可能有零个 .conf 文件。发生这种情况时,RPM 插件会显示:

[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.2:rpm (default) on project clients: 
Unable to copy files for packaging: You must set at least one file. -> [Help 1]

有什么方法可以让映射部分满意地包含零个文件?

我能想出的最好办法是省略 <includes> 标签,该标签采用 <location>.

中指定的所有内容

location

The file or directory to include. If a directory is specified, all files and subdirectories are also included.

您需要在这些未指定包含模式的映射的路径中尽可能具体。我将 confs 添加到下面的位置以避免拉入 project.build.directory 中的所有其他内容。

即使没有选择文件,<directory> 仍然会被创建。

<mapping>
  <directory>/etc/myconfig</directory>
  <configuration>true</configuration>
  <sources>
    <source>
      <location>${project.build.directory}/confs</location>   
    </source>
  </sources>
</mapping>

我也遇到了同样的问题,正在努力解决。错误信息不是那么直观。这样的问题真的很难解决。

错误:
[错误]无法在项目XXX_assembly上执行目标org.codehaus.mojo:rpm-maven-plugin:2.1-alpha-3x:attached-rpm (generate-rpm):无法复制文件进行打包:你必须设置至少一个文件。 -> [帮助 1]

我使用的是以下版本的插件 *

<groupId>org.codehaus.mojo</groupId>
                        <artifactId>rpm-maven-plugin</artifactId>
                        <version>2.1-alpha-3x</version>

* 下面是我来自插件

的映射标签

此映射试图将 batch-test-1.0.war 从 ../batch/target 位置复制到目标位置 ${app.prefix}/batch

问题是标签的 war 文件名称不存在且不正确。我给了错误的 war 文件名,所以 Maven 抱怨它应该 copy.i 通过给我的 war 文件提供正确的名称来更正它,如下所示。 batch-test-1.0.war