我有一个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]
有没有办法让映射部分对包含零文件感到满意?
答案 0 :(得分: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>
答案 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标签此映射要执行的操作是将batch.test-1.0.war从../batch/target位置复制到$ {app.prefix} / batch的目标位置
问题是标记具有不存在且不正确的战争文件的名称。我给了战争文件一个错误的名字,所以Maven抱怨它应该要复制一些。我通过给出我的战争文件的正确名字来纠正它,如下所示。 批处理测试1.0.war