java如何使用Maven和Tycho创建Eclipse插件版本?
我正在构建一个Eclipse项目,它由许多打包在一起的插件组成。我已经为每个组件创建了POM文件,并为项目创建了一个主POM。大概是这样的:
projectDir\releng\pom.xml <-- Parent project
projectDir\proj1\pom.xml <-- Child project 1
projectDir\proj2\pom.xml <-- Child project 2
我的构建当前通过调用构建所有内容的父POM来工作。到目前为止,我一直在使用0.0.1-SNAPSHOT
作为父POM的版本进行构建,在每个Eclipse插件中,我都将0.0.1.qualifier
作为MANIFEST.MF
文件中的版本
我现在想把我的最新版本推广到0.1.0
。根据我的理解,这意味着我必须检查所有POM文件和MANIFEST.MF
文件,并升级这两个文件中的版本(因为虽然版本在父POM中定义,但在所有子POM中都引用)
这是正确的方法吗?还是有一种方法可以使整个过程自动化而不出错
另外,有Maven Release plugin,但这对Eclipse不起作用
# 1 楼答案
tycho-1.1.0中有一个新功能(在本文发布时尚未发布),它应该支持您正在尝试的操作
如果您已经为标准maven release+正确配置了pom,并将dep添加到tycho 1.1.0中,那么您可以按如下方式自定义构建[1]:
[1]这篇文章直接取自描述这一新功能的教程: https://wiki.eclipse.org/Tycho/Release_Workflow
# 2 楼答案
请看这里:Unleash Maven Plugin - Tycho Releases
Release Maven插件是作为Maven Release插件的替代品实现的,它有一个Tycho特性,可以完全满足您的需要。此外,它更灵活、容错,并具有集成的回滚功能
我将很快发布一些博客帖子来推广和解释这个插件
# 3 楼答案
只是一些关于我们如何实现它的提示
这可以通过一个额外的插件来完成,该插件可以转换清单中的版本。MF和*。产品文件。这个插件需要是生命周期的参与者
@Component(role = AbstractMavenLifecycleParticipant.class)
原因是,在发布插件开始寻找修改之前,is必须进行转换和提交。然后它还必须在发布后进行转换mojo executor插件节省了大量工作,因为它可以从插件内部调用replacer、buildhelper和scm插件
另一个重要的问题是,您需要通过配置发布插件来配置clean插件以跳过执行,从而禁用tycho所做的硬编码clean调用
希望这有帮助
# 4 楼答案
对于relase过程的版本更新步骤,有一个tycho-versions-plugin知道如何一致地更新POM和清单
只需转到父/聚合器模块的根目录并调用
这将更新父项目的版本,以及与父项目具有相同/等效版本的所有子项目的版本。在您的例子中,这些都是项目,因为Eclipse版本
0.0.1.qualifier
被认为等同于第谷的0.0.1-SNAPSHOT
对于发布过程的其余步骤(标记、构建、推送标记等),只需调用适当的SCM或Maven命令,例如从脚本调用。我还没有尝试使用maven发布插件来实现这一点(以及apparently no-one else has)