【发布时间】:2019-03-10 23:05:16
【问题描述】:
这与使用 maven 目标更新 pom 依赖项无关。我已经把它整理好了。
所以我负责创建、打包和维护常用的实用程序。这些通用实用程序依次被组织中的所有团队使用。问题是使用这些实用程序的团队不会更新依赖项,除非这是最后的手段。我们希望他们使用我们常用实用程序的最新版本,除非很少。
现在我遇到了 mojohaus 的 Maven Versions Plugin,我认为它通过使用两个目标来满足我的需要 - versions:update-properties 和 versions:use-latest-releases。它符合我的目的,除了两件事:
我看不到从更新依赖项/属性中排除某些 groupid:artifactid 的方法
我们真的希望这是一个强制性的事情(可能是测试执行的一部分 - 这主要是为了测试自动化实用程序)而不是一个 maven 目标。因为如果它是一个 maven 目标,则需要单独调用它,因此对于团队来说是可选的。
我们知道强制更新到最新版本可能会导致缺陷重现性出现一些问题,但我们愿意承担这种风险。我们的实用程序是真正的测试产品。
对此的任何指导/帮助表示赞赏。
编辑:我们已经使用 maven 目标 clean install 运行我们的测试。所以他们使用现有的 pom。我们希望在测试运行之前更新依赖关系。如果可能,还希望将更改提交到源代码控制(bitbucket)。
我们使用 Jenkins 进行测试设置,但团队也在本地机器上运行多个测试。
编辑:找到#1 的答案。该插件提供排除组和工件 ID 的正则表达式。使用标签excludes 和excludesList
【问题讨论】:
-
首先我会通过像 Jenkins 这样的 CI 解决方案来自动化这个...你应该阅读docs
-
如果您不关心可重复性,为什么不使用 SNAPSHOT 版本?
-
@khmarbaise - 更新了描述。我们已经在使用 Jenkins,但团队也在本地运行测试。出于 Jenkins 和 Local 的多种原因,我们希望他们使用最新版本的实用程序。现在我们可以控制 Jenkins,因为所有测试都遵循模板。
-
@JF Meier - Maven 版本插件还会更新 pom 中的所有其他依赖项,并且 SNAPSHOTS 可能仍然存在来自第三方部门的错误。
-
@ashkaps 你能告诉我为什么当团队不更新他们的依赖关系时会出现问题吗?如果他们对旧的感到满意,为什么不让他们保留旧的呢?
标签: maven maven-3 maven-plugin maven-versions-plugin