因此,我可以成功使用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位不会被转移到本地存储库上的安装。
答案 0 :(得分:1)
分类器字段是一个重要部分,因为文件扩展名通常不足以区分项目工件(例如foobar-1.0.jar
,foobar-1.0-javadoc.jar
,foobar-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(至少)