【问题标题】:Maven plugin/extension to dynamically update dependency version用于动态更新依赖版本的 Maven 插件/扩展
【发布时间】:2019-05-18 23:45:27
【问题描述】:

我想动态分配我的 Maven 项目的依赖版本(请不要问为什么 - 我知道这不是一个可取的模式)。据我了解,我必须创建 Maven 扩展来实现这一点,因为调用常规插件为时已晚。

所以,我尝试在 EventSpy 中捕获 Maven 事件,我也尝试过 AbstractMavenLifecycleParticipant。使用这些我可以收到通知,但是如何实际进行更改本身 - 如何使 Maven 开始使用这个新的更新版本?我想我需要以某种方式更改 maven 反应器中的依赖版本....但是如何?

我知道 maven-version-plugin 中有解决方案,但这需要将其作为两步工作:首先操作 pom.xml,然后运行实际构建。但我需要在一次 maven 运行中完成。

有什么想法吗?提前谢谢。

编辑

示例 pom.xml 文件说明情况

库模块:

  • my-lib pom.xml

    <groupId>foo.bar</groupId>
    <artifactId>my-lib</artifactId>
    <version>1.0.5</version>
    
  • 我的应用程序 pom.xml

    <groupId>foo.bar</groupId>
    <artifactId>my-app</artifactId>
    <version>2.5.0</version>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        ...
        <dependency>
            <groupId>foo.bar</groupId>
            <artifactId>my-lib</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    <dependencies>
    

现在,当我构建 my-app 时,我需要根据我在 nexus 中找到的最新发布版本动态分配 my-lib 版本(我知道如何获得正确的版本 - 假设它是 1.0.5)。但是如何进行某种预处理来改变反应器中的版本,以便 Maven 使用 1.0.5 版本?

【问题讨论】:

  • 欢迎来到 Stack Overflow!提问时请更具体一点:到目前为止,您对代码示例进行了哪些尝试? (I downvoted because there is no code) / 您有什么期望? / 您会遇到什么错误? 请查看“How to ask”以获得帮助
  • 嘿,丹 - 你能举个例子吗?如何/什么决定需要什么版本的依赖?
  • 对不起,丰富。添加了更多信息。谢谢!

标签: java maven maven-3 maven-plugin maven-extension


【解决方案1】:

好的。看来我明白了 ;-) 感谢 khmarbaise 的评论。我已经看过这个页面,但没有注意到这一点。

所以我创建了 MavenLifecycleParticipant,我在其中计算所需的版本并将其设置为用户属性:

@Component(role = AbstractMavenLifecycleParticipant.class, hint = "my-dep")
public class DependencyLifecycleParticipant extends AbstractMavenLifecycleParticipant 
{

@Override
public void afterSessionStart(MavenSession session) throws MavenExecutionException {
    session.getUserProperties().setProperty("MyVersion", "1.2.3");
}

}

现在在我的 pom.xml 中,我可以使用类似的东西:

<version>${MyVersion}</version>

在依赖项和项目版本中(这对我来说很好;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2016-05-23
    • 1970-01-01
    • 2016-04-17
    • 2015-10-13
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多