【问题标题】:Automatically force update pom to newer versions from inside a test从测试内部自动强制更新 pom 到较新的版本
【发布时间】:2019-03-10 23:05:16
【问题描述】:

这与使用 maven 目标更新 pom 依赖项无关。我已经把它整理好了。 所以我负责创建、打包和维护常用的实用程序。这些通用实用程序依次被组织中的所有团队使用。问题是使用这些实用程序的团队不会更新依赖项,除非这是最后的手段。我们希望他们使用我们常用实用程序的最新版本,除非很少。 现在我遇到了 mojohaus 的 Maven Versions Plugin,我认为它通过使用两个目标来满足我的需要 - versions:update-propertiesversions:use-latest-releases。它符合我的目的,除了两件事:

  1. 我看不到从更新依赖项/属性中排除某些 groupid:artifactid 的方法

  2. 我们真的希望这是一个强制性的事情(可能是测试执行的一部分 - 这主要是为了测试自动化实用程序)而不是一个 maven 目标。因为如果它是一个 maven 目标,则需要单独调用它,因此对于团队来说是可选的。

我们知道强制更新到最新版本可能会导致缺陷重现性出现一些问题,但我们愿意承担这种风险。我们的实用程序是真正的测试产品。

对此的任何指导/帮助表示赞赏。

编辑:我们已经使用 maven 目标 clean install 运行我们的测试。所以他们使用现有的 pom。我们希望在测试运行之前更新依赖关系。如果可能,还希望将更改提交到源代码控制(bitbucket)。 我们使用 Jenkins 进行测试设置,但团队也在本地机器上运行多个测试。

编辑:找到#1 的答案。该插件提供排除组和工件 ID 的正则表达式。使用标签excludesexcludesList

【问题讨论】:

  • 首先我会通过像 Jenkins 这样的 CI 解决方案来自动化这个...你应该阅读docs
  • 如果您不关心可重复性,为什么不使用 SNAPSHOT 版本?
  • @khmarbaise - 更新了描述。我们已经在使用 Jenkins,但团队也在本地运行测试。出于 Jenkins 和 Local 的多种原因,我们希望他们使用最新版本的实用程序。现在我们可以控制 Jenkins,因为所有测试都遵循模板。
  • @JF Meier - Maven 版本插件还会更新 pom 中的所有其他依赖项,并且 SNAPSHOTS 可能仍然存在来自第三方部门的错误。
  • @ashkaps 你能告诉我为什么当团队不更新他们的依赖关系时会出现问题吗?如果他们对旧的感到满意,为什么不让他们保留旧的呢?

标签: maven maven-3 maven-plugin maven-versions-plugin


【解决方案1】:

抱歉坚持。从 Maven 的角度来看,我看到了两个主要的解决方案:

  1. 您的项目和实用程序 jar 紧密耦合,每个项目始终需要使用最新版本。然后,您可以将所有项目和您的实用程序捆绑在一个多模块项目中。这可确保所有内容始终是最新的,但它要求所有项目和您的实用程序始终一起构建(而不是单独构建)。

  2. 您将实用程序分发到在不同时间构建和发布的不同项目。然后由项目决定何时更新。遗憾的是,没有标准的方式来弃用 jar。

如果我对您的理解正确,您需要“中间”的东西。这可能很难实现。

【讨论】:

    猜你喜欢
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2017-06-12
    • 2020-05-26
    相关资源
    最近更新 更多