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

时间:2015-03-26 10:41:03

标签: maven rpm-maven-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>

但是,根据打包过程,可能会有零个.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]

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

2 个答案:

答案 0 :(得分:2)

我能够提出的最好的方法是省略<includes>标记,该标记包含<location>中指定内容的所有内容。

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>

答案 1 :(得分: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>

* 以下是来自插件

的我的Mapping标签

enter image description here

此映射要执行的操作是将batch.test-1.0.war从../batch/target位置复制到$ {app.prefix} / batch的目标位置

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