rpm-maven-plugin v2.1.5自动gzipping我的文件

时间:2016-12-01 00:30:04

标签: maven rpm-maven-plugin

我在rpm安装期间有一个我想要安装到/ usr / share / man / man8的man文件。这是我的映射。

<mapping>
  <directory>/usr/share/man/man8</directory>
  <documentation>true</documentation> <!-- no difference if I add or remove this -->
  <filemode>644</filemode>
  <username>root</username>
  <groupname>root</groupname>
  <directoryIncluded>false</directoryIncluded>
  <recurseDirectories>false</recurseDirectories>
  <sources>
    <source>
      <location>${project.build.directory}</location>
      <includes>
        <include>mymanpage.8</include>
      </includes>
    </source>
  </sources>
</mapping>

rpm-maven-plugin错误并告诉我找不到 mymanpage.8 。我确认 mymanpage.8 位于目标目录中。然后我注意到该插件将 mymanpage.8.gz 复制到 target / rpm / rpmtest / buildroot / usr / share / man / man8 目录。所以我假设插件被识别,它可以gzip这个手册页并做到了但是因为我的映射是专门包括mymanpage.8它抱怨它找不到它。我尝试将include更改为mymanpage.8 *,它仍然给我找到相同的文件错误。

有没有人见过这个?有什么问题?

我想我有一个解决方法,就是将mymanpage.8文件复制到我的安装目录,然后在postinstall scriptlet中将其移动到/ usr / share / man / man8。

3 个答案:

答案 0 :(得分:0)

rpm-maven-plugin将工作委托给rpmbuild命令。 这些压缩手册页。

您可以使用location标记指定目录,也可以指定文件。

<mapping>
  <directory>/usr/share/man/man8</directory>
  <filemode>644</filemode>
  <username>root</username>
  <groupname>root</groupname>
  <directoryIncluded>false</directoryIncluded>
  <recurseDirectories>false</recurseDirectories>
  <sources>
    <source>
      <location>${project.build.directory}/mymanpage.8</location>
    </source>
  </sources>
</mapping>

如果您更喜欢使用includes,则必须使用通配符模式。

documentation标记不适用于联机帮助页,但适用于其他文档,例如更改日志。请参阅rpm-maven-plugin documentation

答案 1 :(得分:0)

问题可能是手册页是在比包更晚的阶段构建的。因此,当rpm插件试图打包手册页时,它还没有。你可以在这里找到生命周期:

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

因此,请确保手册页已创建并在包阶段之前在build目录中结束,例如在generate-resources中。

答案 2 :(得分:0)

在rpm打包之前,有扩展名为“ .8”的手册页。 Rpmbuild强行压缩手册页,并以.gz扩展名重命名手册页,因此rpm-maven-plugin找不到扩展名为“ .8”的文件。第一种解决方案是像这样用.gz扩展名重命名未压缩的文件

<mapping>
    <directory>/usr/share/man/man8</directory>
    <directoryIncluded>false</directoryIncluded><!-- required for CentOS 7 -->
    <sources>
        <source>
            <!-- rpmbuild rename manpages from *.8 to *.8.gz, so we should use <destination> tag to set new name -->
            <location>generated-docs/mymanpage.8</location>
            <destination>mymanpage.8.gz</destination>
        </source>
    </sources>
<mapping>

现在rpmbuild不再重命名文件,它适用于CentOS 7(使用man-db软件包来处理手册页),但不适用于CentOS 6(使用man软件包来处理手册页)。 ),CentOS 6无法打开此类手册页。

因此,要修复此问题,需要手动压缩手册页。对于压缩,您可以使用resourcecompressor maven插件

<plugin>
    <groupId>com.github.ryanholdren</groupId>
    <artifactId>resourcecompressor</artifactId>
    <version>2017-06-24</version>
    <executions>
        <execution>
            <goals>
                <goal>compress</goal>
            </goals>
            <configuration>
                <directory>generated-docs/</directory>
                <filter>\.8$</filter>
                <compression>SMALLEST</compression>
            </configuration>
        </execution>
    </executions>
</plugin>

现在,rpm-maven-plugin可以配置为使用.gz文件(如果需要,可以使用通配符表达式),并且rpmbuild不会尝试重命名和压缩手册页。 / p>

<mapping>
    <directory>/usr/share/man/man8</directory>
    <directoryIncluded>false</directoryIncluded><!-- required for CentOS 7 -->
    <sources>
        <source>
            <location>generated-docs/</location>
            <includes>
                <include>*.8.gz</include>
            </includes>
        </source>
    </sources>
</mapping>