3

我们的组织有一个命名 rpm 的约定。通常,rpm 的基本名称比 Maven 项目短。还有一个关于如何命名版本的约定。所以我们想要一个像 ${shortname}-${project.version}-${release}.noarch.rpm.

我想使用 rpm-maven-plugin 而不是旧的 nmake 技术来构建这样的 rpm。

这很容易使用插件的参数来完成。在目标目录中生成的 rpm 具有所需的名称。

但是,当mvn install将此 rpm 安装到 maven 存储库时,它坚持以“maven 方式”存储它:${project.artifactId}-${project.version}.rpm

我希望使用最初在包上创建的名称将 rpm 存储在标准 maven 存储库目录中。

我怎样才能做到这一点?

更新:我尝试使用 maven-install-plugin (安装文件目标)并没有得到我想要的结果。但这部分是因为我没有正确调用它。它没有被调用。如果您定义一个安装文件目标,它必须明确地绑定到安装阶段。这样做,即<phase>install</phase>在配置中添加一个至少调用了我想要的安装的执行,但它仍然不允许我根据需要命名 rpm。

4

1 回答 1

3

根据 Apache Maven 项目的提交者 Karl Heinz Marbaise 的说法,我正在尝试做的事情是不可能的,也不应该尝试。

但是,我需要我需要的东西,并且找到了一个折衷方案,可以满足我的大部分需求。我唯一需要牺牲的是存储库 RPM 必须与项目的其余部分位于同一存储库目录中的假设。这是一个很小的牺牲。完成后,我可以将 rpm(按我想要的名称命名)存储在 Maven 存储库的目录中,并以短名称命名。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
                <execution>
                        <id>install-rpm</id>
                        <goals>
                                <goal>install-file</goal>
                        </goals>
                        <phase>install</phase>
                        <configuration>
                                <file>${project.build.directory}/rpm/${rpm.name}/RPMS/noarch/${rpm.name}-${project.version}-${rpm.release}.noarch.rpm</file>
                                <groupId>${project.groupId}.rpms</groupId>
                                <artifactId>${rpm.name}</artifactId>
                                <version>${project.version}-${rpm.release}</version>
                                <classifier>noarch</classifier>
                                <packaging>rpm</packaging>
                        </configuration>
                </execution>
        </executions>
</plugin>

使用 groupId${project.groupId}.rpms而不是只${project.groupId}允许以这种方式构建的所有 rpm 存在于存储库的主分支之外,这在我们的情况下很有用。

使用一个版本${project.version}-${rpm.release}而不是仅仅${project.version}允许将版本合并到名称中。

noarch分类器也将其纳入名称。

于 2015-12-08T14:54:57.137 回答