如何从单个父 pom.xml 构建具有不同版本的插件?
Posted
技术标签:
【中文标题】如何从单个父 pom.xml 构建具有不同版本的插件?【英文标题】:How to build plugins having different versions from a single parent pom.xml? 【发布时间】:2011-07-09 23:02:04 【问题描述】:我正在尝试使用 Maven Tycho 构建几个 Eclipse 插件。所有插件的版本号不一样。
假设如下 pom 架构:
plugin1(版本 1.0.6.qualifier)/pom.xml plugin2(版本 1.4.0.qualifier)/pom.xml pom.xml(父 pom 版本 1.0.0.SNAPSHOT)Maven 的构建失败并出现以下错误:
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.12.0:validate-version (default-validate-version) on project plugin1: Unqualified OSGi version 1.0.6.qualifier must match unqualified Maven version 1.0.0-SNAPSHOT for SNAPSHOT builds
如何配置父pom才能构建不同版本号的插件? 我应该使用不同的 pom 架构来解决这个问题吗?
请注意,我不想修改插件的版本。
【问题讨论】:
错误信息显示您遇到的问题与您描述的完全不同。这个问题不是插件版本不同。所以这个问题对其他人没有用,应该关闭。 【参考方案1】:maven POM 版本和 MANIFEST 版本必须匹配(MANIFEST 中的后缀“.qualifer”替换为 pom.xml 中的“-SNAPSHOT”)。
见http://wiki.eclipse.org/Tycho/Packaging_Types#eclipse-plugin
【讨论】:
【参考方案2】:您可以像这样配置 tycho 插件,以便仅警告版本问题:http://www.eclipse.org/tycho/sitedocs/tycho-packaging-plugin/validate-version-mojo.html
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<configuration>
<strictVersions>false</strictVersions>
</configuration>
</plugin>
</plugins>
结果:
[INFO] --- tycho-packaging-plugin:0.16.0:validate-version (default-validate-version) @ org.apache.commons.io ---
[WARNING] Unqualified OSGi version 5.1.0.qualifier must match unqualified Maven version 2.1.0-SNAPSHOT for SNAPSHOT builds
【讨论】:
【参考方案3】:我找到了解决方案。我在每个模块的 pom.xml 中添加了对应 Eclipse 插件版本的版本标签。
是否可以使用没有任何版本标签的 maven pom.xml 文件并让 tycho 使用 MANIFEST.MF 文件中指定的版本?
【讨论】:
这里不是提出新问题的地方 - 而是打开一个新问题。【参考方案4】:即使我也遇到过同样的问题并找到了相同的解决方案。
其实问题是 Manifest.MF 文件版本和 pom.xml 父版本应该一样,否则会报这个错误。
清单.MF 捆绑版本:2.5.0.qualifier
pom.xml
<parent>
<groupId>com.example.pma</groupId>
<artifactId>com.example.pma.product.parent</artifactId>
<version>2.5.0-SNAPSHOT</version>
<relativePath>../com.example.pma.product.parent</relativePath>
</parent>
【讨论】:
以上是关于如何从单个父 pom.xml 构建具有不同版本的插件?的主要内容,如果未能解决你的问题,请参考以下文章