我正在尝试使用rpm-maven-plugin来构建 rpm。众所周知,此插件仅适用于具有 rpm 命令的操作系统(RedHat、CentOS)。它在 Windows 下不起作用(也许 Cygwin 除外,但这不是我的选择)。然而,我使用 Eclipse 在 Windows 上编码。没关系,我可以简单地将更改提交到远程 Atlassian Stash git 存储库并将其下载到 RedHat 服务器以构建 rpm。
但我仍然希望能够在 Eclipse 中构建应用程序,只是跳过构建的 RPM 部分。
我的 pom.xml 有
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1.4</version>
<executions>
<execution>
<id>generate-rpm</id>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>
<configuration>
...
</configuration>
</plugin>
我想我可以避免更改我的 Eclipse 生命周期映射元数据的错误。(窗口 --> 首选项 --> Maven --> 生命周期映射),如本m2eclipse 文档中所述
所以我有以下生命周期映射元数据.xml(是的,我确实记得用新设置更新 Eclipse):
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<versionRange>[2.1.4,)</versionRange>
<goals>
<goal>rpm</goal>
<goal>attached-rpm</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
然而我的构建在 Eclipse 下失败了。生命周期映射中的插件排除未发生:
[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.4:rpm (generate-rpm) on project icmloadtester: Unable to query for default vendor from RPM: Error while executing process. Cannot run program "rpm": CreateProcess error=2, The system cannot find the file specified -> [Help 1]
为什么这个机制不起作用?
一个可能的原因是 Eclipse没有给出这个插件的 m2e 文档中描述的错误,这是整个生命周期映射业务旨在解决的条件,也许这个生命周期映射业务适用于不同阶段手术。
那么我该如何配置我的项目,以便 rpm 插件的执行只发生在 rpm 可执行文件存在的系统上呢?