首页 > 解决方案 > Maven:覆盖父 pom 以将映射添加到“rpm-maven-plugin”

问题描述

我有一个带有父 pom 和许多子模块的 Maven 项目。大多数模块从父 pom 共享相同的 rpm 打包配置,但在某些情况下我需要覆盖配置以添加映射(我基本上需要在 rpm 中添加一个额外的文件)。

我试图在父 pom 中这样做:

    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>rpm-maven-plugin</artifactId>
      <version>2.1.5</version>
      <executions>
        <execution>
          <id>generate-rpm</id>
          <goals>
            <goal>rpm</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        ...
        <mappings>
          <mapping>
            ...
          </mapping>
          <mapping>
            ...
          </mapping>
          </mapping>
        </mappings>
      </configuration>
    </plugin>

在孩子们身上:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1.5</version>
    <executions>
      ...
    </executions>
    <configuration combine.children="append">
      <mappings>
        <mapping>
          ... My specific mapping
        </mapping>
      </mappings>
    </configuration>
  </plugin>

但据我所知,进入 RPM 的唯一映射是子代覆盖

标签: javamavenrpm

解决方案


要使其正常工作, combine.children="append" 标记必须在映射元素中

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1.5</version>
    <executions>
      ...
    </executions>
    <configuration>
      <mappings combine.children="append">
        <mapping>
          ... My specific mapping
        </mapping>
      </mappings>
    </configuration>
  </plugin>

推荐阅读