【问题标题】:Optional mapping sections in Maven RPM plugin?Maven RPM 插件中的可选映射部分?
【发布时间】:2015-03-26 10:41:03
【问题描述】:

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

有没有什么方法可以让映射部分包含零文件?

【问题讨论】:

    标签: maven rpm-maven-plugin


    【解决方案1】:

    我能想到的最好的办法是省略&lt;includes&gt; 标签,该标签取自&lt;location&gt; 中指定的所有内容。

    location

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

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

    即使没有选择文件,&lt;directory&gt; 仍然会被创建。

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

    【讨论】:

    • confs 根本不存在的任何提示?
    • 目的是您创建文件夹来保存所有与您的模式匹配的文件。因此,如果您的 ${project.build.directory} 中有 10 个 .conf 文件和 100 个其他文件,那么您只需将 conf 文件移动到一个名为 conf 的新目录并包含它。
    • 当然这很清楚,但我对上述问题的意思是我们有一些项目在其源代码中没有任何 .conf 文件,因此没有什么可以移至${project.build.directory}/confs。我错过了这一点,尽管有一个空的${project.build.directory}/confs 没有问题,只要它存在(否则插件运行失败)。谢谢
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2019-07-14
      相关资源
      最近更新 更多