【问题标题】:rpm-maven-plugin how to control the name under which rpm is stored in m2 repository?rpm-maven-plugin 如何控制 rpm 在 m2 存储库中存储的名称?
【发布时间】:2015-12-07 17:26:16
【问题描述】:

我们的组织有一个命名 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.json 上创建的名称将 rpm 存储在标准 maven 存储库目录中。

我怎样才能做到这一点?

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

【问题讨论】:

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


    【解决方案1】:

    据 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 分类器也将其包含在名称中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2013-09-08
      • 2018-01-29
      • 1970-01-01
      相关资源
      最近更新 更多