5

所以我可以成功地使用 maven RPM 插件来按预期生成 RPM 工件。

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

问题:RPM生成的名字很好,如下:code-module-1.0.3-SNAPSHOT20120727095507.amd64.rpm

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

代码模块-rpm-1.0.3-SNAPSHOT-rpm.rpm

我丢失了全名,RPM 的体系结构部分,而是 Maven 将 rpm 附加到 .rpm 扩展名(我尚未定义的分类器)之前的名称末尾,并使用我的 pom 工件 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 位不会转移到本地 repo 上的安装中。

4

2 回答 2

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

于 2014-11-11T20:32:53.723 回答
-1

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

于 2014-06-11T19:12:51.057 回答