8

我有一个 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>

但是,根据打包过程,可能有零个 .conf 文件要放入 /etc。发生这种情况时,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]

有没有办法让映射部分对包含零文件感到满意?

4

2 回答 2

2

我能想到的最好的方法是省略<includes>标签,它会从<location>.

地点

要包含的文件或目录。如果指定了目录,则还包括所有文件和子目录。

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

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

<mapping>
  <directory>/etc/myconfig</directory>
  <configuration>true</configuration>
  <sources>
    <source>
      <location>${project.build.directory}/confs</location>   
    </source>
  </sources>
</mapping>
于 2016-03-15T20:44:58.440 回答
0

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

错误:
[错误] 无法在项目 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 的目标位置

问题是标签的战争文件名称不存在且不正确。我给了战争文件的错误名称,所以 Maven 抱怨它应该有一些东西要复制。我通过给出我的战争文件的正确名称来纠正它,如下所示。批处理测试1.0.war

于 2020-04-29T15:23:11.640 回答