我们的组织有一个命名rpms的约定。通常,rpm将具有比Maven项目更短的基本名称。还有一个关于如何命名版本的约定。所以我们想要一个像${shortname}-${project.version}-${release}.noarch.rpm这样的名字。
我想使用rpm-maven-plugin构建这样的rpm,而不是使用旧的nmake技术。
使用插件的参数很容易做到这一点。在目标目录中生成的rpm具有所需的名称。
然而,当mvn install将这个rpm安装到maven存储库中时,它坚持以"maven的方式“存储它:${project.artifactId}-${project.version}.rpm。
我希望使用最初在包中创建的名称将rpm存储在标准的maven存储库目录中。
我如何才能做到这一点呢?
更新:我尝试使用maven-install-plugin (install-file目标),但没有得到我想要的结果。但这在一定程度上是因为我没有正确调用它。它没有被调用。如果您定义了一个安装文件目标,那么它必须显式地绑定到安装阶段。这样做,也就是说,向配置添加<phase>install</phase>至少会调用我想要的安装的执行,但它仍然不允许我根据需要命名rpm。
发布于 2015-12-08 22:54:57
根据Karl Heinz Marbaise的说法,他是Apache Maven项目的提交者,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},允许以这种方式构建的所有rpms位于存储库的主分支之外,这在我们的情况下很有用。
使用${project.version}-${rpm.release}的一个版本,而不仅仅是${project.version},可以将发行版合并到名称中。
noarch分类器也会将这一点添加到名称中。
https://stackoverflow.com/questions/34139544
复制相似问题