【问题标题】:Run custom plugin as part of the maven release but before the version is updated to the next snapshot运行自定义插件作为 maven 版本的一部分,但在版本更新到下一个快照之前
【发布时间】:2019-03-28 09:05:19
【问题描述】:

我编写了一个 Maven 插件,它会调用一个 Web 服务,其中包含有关我的项目的详细信息,包括版本号。我只想在我的项目发布时运行它,而不是在部署快照时运行。

我有一个管理 build/deploy/release 进程的 Jenkins 工作。如果我从

修改发布目标和选项

-Dresume=false release:prepare release:perform --debug

-Dresume=false release:prepare release:perform my-plugin:dostuff --debug

这会实现我想要的吗?还是将 release: 执行我的发布版本的构建和部署,然后在我的插件运行之前将 POM 更新到下一个快照版本?

如果是这样,有没有办法实现我想要的,即在运行 Jenkins 作业以执行 1.0 的发布时,让发布插件将 POM 更新为 1.0,构建并部署它,然后运行我的插件来调用在发布插件将版本更新为 1.1-SNAPSHOT 之前的 Web 服务。

谢谢, 保罗

【问题讨论】:

    标签: java maven maven-plugin


    【解决方案1】:

    您可以将插件添加到 POM,将其配置为在标准生命周期的适当阶段运行。此外,您可以将插件编程为仅在发布发生时执行操作,即检查项目版本是否以 -SNAPSHOT 结尾。

    【讨论】:

    • 我应该从哪里获得版本?刚刚尝试在发布后添加我的插件:执行并在流程开始时使用 MavenProject 对象作为参数进入 SNAPSHOT 版本,即 @Parameter(defaultValue = "${project}", required = true, readonly = true ) MavenProject 项目;在我扩展 AbstractMojo 的 Mojo 类中。
    • 在插件内部,您可以从MavenProject 对象中读取版本。确保不要将目标添加到命令行(在 Jenkins 中),而是添加到 POM。
    • 我得到了这个工作。在我将插件添加到 POM 并将阶段设置为目标之后,MavenProject 对象中设置的项目版本让我获得了发布版本,而不是发布版本的快照。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2017-10-17
    • 2014-07-06
    • 2013-06-23
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多