如何使用正确的rpm名称将生成的Maven RPM工件安装到本地m2 repo?

时间:2012-07-27 15:16:56

标签: maven rpm

因此,我可以成功使用maven RPM插件按预期生成RPM工件。

我在pom.xml中使用附加rpm目标(打包为pom),以便RPM插件将工件安装到本地m2存储库中(因为它绑定到包阶段)。

问题:RPM生成的名称很棒,如下所示:code-module-1.0.3-SNAPSHOT20120727095507.amd64.rpm

然而,当maven将其安装到我的本地仓库时,我最终得到:

代码模块-RPM-1.0.3-快照rpm.rpm

我丢失了全名,RPM的架构部分,而Maven在.rpm扩展名(我没有定义的分类器)之前将rpm附加到名称的末尾,并使用我的pom artifact id作为rpm名称而不是rpm名称本身。

我尝试使用build-helper插件指向目标目录中生成的RPM,但这不起作用,因为rpm名称是动态生成的,而build-helper插件只接受完整文件名而没有通配符等。

我不想更改工件的最终名称,因为我要破坏maven惯例。

这是maven输出:

[INFO] Installing /home/xzcx/Development/repository/svn/source/parent-project    
/code-module-rpm/target/rpm/code-module/RPMS/amd64/code-module-1.0.3-
SNAPSHOT20120727145507.amd64.rpm to  
/home/xzcx/.m2/repository/com/xpackage/ypackage/codepackage/code-module-rpm/1.0.3-
SNAPSHOT/code-module-rpm-1.0.3-SNAPSHOT-rpm.rpm

有什么想法吗?

更新:我注意到RPM插件站点声明使用附加的:RPM目标将允许您构建多个RPM,例如使用不同的体系结构等...但基于上述,这将是唯一可行的方法是使用分类器作为RPM名称的arch位不会被转移到本地存储库上的安装。

2 个答案:

答案 0 :(得分:1)

分类器字段是一个重要部分,因为文件扩展名通常不足以区分项目工件(例如foobar-1.0.jarfoobar-1.0-javadoc.jarfoobar-1.0-sources.jar都有文件扩展名jar )。

  

除了主要工件外,还可以有其他文件   附加到Maven项目。可以识别这样的附件   并由他们的分类器访问。

http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html

所有项目工件都由project.artifactId + project.version相互关联,因此被命名为<artifactId>-<version>-<classifier>.<ext>

http://maven.apache.org/plugins/maven-install-plugin/examples/installing-secondary-artifacts.html

答案 1 :(得分:-1)

我遇到了同样的问题,但我想要的主要是从code-module-rpm-1.0.3-SNAPSHOT-rpm.rpm中删除-rpm,因为我觉得它是多余的。我应该这样命名:code-module-rpm-1.0.3-SNAPSHOT.rpm(至少)