如何从单个父 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 构建具有不同版本的插件?的主要内容,如果未能解决你的问题,请参考以下文章

Maven单独构建多模块项目中的单个模块

Maven单独构建多模块项目中的单个模块

Spring Boot快速构建应用

从一个命令运行多个 pom 文件

如何在 UI 上使用 TFS 将构建版本注入 pom.xml?

不分散版本号的maven项目层次结构