4

我正在使用 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:rpmmakeATar 脚本时,会在 DIRECTORY_FOR_MY_TAR 中创建一个 tar,但它不包含在我的 rpm 中。如果我mvn rpm:rpm再次运行,我的 tar 将成功包含在 rpm 中(因为它是在我上次运行时从 makeATar 的执行中放入 DIRECTORY_FOR_MY_TAR 的mvn rpm:rpm)。

4

1 回答 1

3

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

  • prepare-package阶段使用maven-antrun-plugin来安排所有的artfacts
  • 打包阶段调用rpm-maven-plugin

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

我希望这有帮助。

于 2014-07-27T12:23:22.337 回答