maven-3 - rpm-maven-plugin 如何控制 m2 存储库中存储的 rpm 名称?

标签 maven-3 rpm-maven-plugin maven-install-plugin

我们的组织有一个命名 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

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

我怎样才能做到这一点?

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

最佳答案

根据 Apache Maven 项目的提交者 Karl Heinz Marbaise 所说,what I am trying to do is impossible, and should not be attempted.

但是,我需要我需要的东西,并且找到了一个折衷方案,可以满足我的大部分需求。我唯一必须牺牲的是假设存储库 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>

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

使用 ${project.version}-${rpm.release} 而不仅仅是 ${project.version} 允许将发布合并到名字。

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

关于maven-3 - rpm-maven-plugin 如何控制 m2 存储库中存储的 rpm 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139544/

相关文章:

maven-2 - 安装构建工件而不再次运行构建

java - 在常规 Maven 构建中使用来自 Eclipse p2 存储库的依赖项?

jar - Maven项目中的ClassNotFoundException

java - Maven-assembly-plugin 失败,超过 GC 开销限制

java - 当 Java 需要这种链接约定时,为什么 Maven 在安装 native 库时会修剪 "lib"前缀?

maven - 如何使用 maven deploy plugin 3.0.0-M1 生成和上传校验和?

maven - 并且在多个文件条件下不适用于 Maven 配置文件

我想检查 rpm 正在安装或更新的 RPM 构建规范文件

dependencies - 使用 rpm-maven-plugin 构建的 RPM 上的 rpmlib(FileDigests) 依赖错误