我正在尝试使用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生命周期映射元数据时避免错误。 (窗口 - &gt;首选项 - &gt; Maven - &gt;生命周期映射),如此m2eclipse documentation
中所述所以我有以下lifecycle-mapping-metadata.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 NOT 给我这个插件描述in the m2e document的错误,这是整个生命周期映射业务旨在解决的条件,也许此生命周期映射业务适用于不同的操作阶段。
那么我如何配置我的项目以便rpm插件只在rpm可执行文件存在的系统上执行?