【问题标题】:How can I run a script before RPM file creation?如何在创建 RPM 文件之前运行脚本?
【发布时间】:2014-07-27 20:23:22
【问题描述】:

我正在使用 rpm-maven-plugin 创建一个 rpm 的压缩包,其中包含我项目中的 WAR。如果我已经有一个 tar 文件,我可以创建一个 rpm。但是,我想在运行 rpm 目标时生成 tar 文件。

我有一个创建 tar 文件的脚本。我在准备步骤中调用了脚本,但是在脚本执行时已经创建了 rpm,因此 tar 不包含在我的 rpm 中。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <version>2.1-alpha-4</version>
    <executions>
        <execution>
            <id>generate-rpm</id>
            <goals>
                <goal>rpm</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mappings>
          <mapping>
            <directory>/foo</directory>
            <sources>
                <source>
                    <location>DIRECTORY_FOR_MY_TAR</location>
                </source>
            </sources>
          </mapping>
        </mappings>
        <defineStatements>
           <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
        </defineStatements>
        <prepareScriptlet>
            <script>./../../../../scripts/rpm/prepare/makeATar.sh</script>
        </prepareScriptlet>
    </configuration>
</plugin>

当我运行mvn rpm:rpm 时,makeATar 脚本会在 DIRECTORY_FOR_MY_TAR 中创建一个 tar,但它不包含在我的 rpm 中。如果我再次运行 mvn rpm:rpm,我的 tar 将成功包含在 rpm 中(因为它是在我上次运行 mvn rpm:rpm 时从 makeATar 的执行中放入 DIRECTORY_FOR_MY_TAR 的)。

【问题讨论】:

    标签: maven maven-plugin rpm rpm-maven-plugin


    【解决方案1】:

    我们也有类似的设置,我们构建一些工件,然后使用 rpm-maven-plugin 将它们打包到 RPM 中。
    为了在打包为 RPM 之前安排工件,我们

    • prepare-package阶段使用maven-antrun-plugin来安排所有的artfacts
    • 调用 rpm-maven-plugin 作为 package 阶段的一部分

    它对我们非常有效。
    您还可以将 rpm-maven-plugin 执行绑定到 install 阶段,并使用 package 阶段中作为包的工件。
    或者将 RPM 打包放在一个单独的 maven 模块中,并在所有其他模块都已构建后构建它(并按计划打包它们的工件)。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 2017-06-16
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多