【问题标题】:Why does jfrog maven artifactory plugin is invoked at validation phase?为什么在验证阶段调用 jfrog maven artifactory 插件?
【发布时间】:2016-09-16 07:26:42
【问题描述】:

Here 是一个 jfrom artifactory 插件概述。他们告诉:

该插件的调用阶段默认为“验证”,我们建议您不要更改它,以便在您的 Maven 构建的生命周期中尽早调用该插件。

据我所知(我错了吗?)这个插件用于部署 maven 项目。所以这个插件应该“等待”直到所有测试都通过,源代码编译和打包和部署工件只在 delploy 阶段,不是吗?

问题:为什么它与验证阶段相关联?

【问题讨论】:

    标签: java maven repository maven-plugin artifactory


    【解决方案1】:

    确实,artifactory-maven-plugin 应用了与通常的 mojo(Maven 目标)实现不同的模式:它依赖于 Maven Lifecycle listeners/extensions

    看看它的github repository,其实魔力:

    • 确保跳过maven-deploy-plugin default binding by settingmaven.deploy.skip 属性到true
    • 向构建会话添加一个自定义 Maven 侦听器,BuildInfoRecorderLifecycleParticipant
    • 然后在适当的时候通过其插件有效地deploys

    绑定到validate 阶段是有效跳过默认deploy 行为并注册自己的侦听器所必需的。

    【讨论】:

    • 这是一个 100% 正确的答案。我们这样做的原因是一次部署多项目构建的所有模块,防止构建失败以部署部分结果。
    • 嗨@JBaruch,是否可以为多模块项目的某些模块跳过部署/配置部署(如 maven-deploy-plugin deploy-file 目标)?
    【解决方案2】:

    我查看了插件的source code 里面发现了这一行:

    String deployGoals = 'deploy,maven-deploy-plugin'
    

    此字段用于recordBuildInfo 方法。该方法将BuildInfoRecorder类注册为监听器,calls是真正的deploy方法,而session ends

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多