如何在创建RPM文件之前运行脚本?

时间:2014-07-27 04:28:18

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

我正在使用rpm-maven-plugin来创建包含我项目中WAR的tarball的rpm。如果我已经有一个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中的。)

1 个答案:

答案 0 :(得分:3)

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

  • 使用 prepare-package 阶段中的maven-antrun-plugin来排列所有的aritfacts
  • rpm-maven-plugin 称为阶段的一部分

对我们来说效果很好。
您还可以将 rpm-maven-plugin 执行绑定到安装阶段,并使用阶段中包的工件。 /> 将RPM打包放在单独的maven模块中,并在构建完所有其他模块后构建它(并按计划打包它们的工件)。

我希望这会有所帮助。