问题标签 [maven-versions-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
95 浏览

maven - Maven 根据版本更新属性

我想在执行发布时将给定 pom 中的属性更新为新版本的主要+次要版本。

为此,我需要设定在发布期间运行的目标。我可以提前计算属性,但versions:set-property我在其他地方看到的似乎已经消失(根据http://www.mojohaus.org/versions-maven-plugin/和 CLI 使用),以及此插件的其他目标似乎无法处理不使用确切的版本。

有没有任何相当简单的方法可以做到这一点,还是我必须使用 exec 或 antrun 插件来做到这一点?无论如何,似乎只有文本替换才能解决它。替换插件似乎可以工作,但这需要获取以前的版本,并且需要努力不破坏其他参考。

0 投票
0 回答
382 浏览

maven - 具有非数字版本的 Maven 版本插件

我目前正在实施一项 Jenkins 工作,其目标是调用 Maven 版本:显示依赖项更新,以便为我的依赖项找到最新的可用增量更新。

但是,该插件无法找到主要版本的依赖项的更新develop。实际上,我在项目的依赖项中引用了其他内部项目,所有这些项目都从develop版本开始,直到我们分支到发布分支,我们将在其中引用所需的发布版本。

我有一个专门的 POM 来管理这些版本,它看起来像这样:

因此,当我运行时mvn versions:display-property-updates -DallowMajorUpdates=false,结果会显示 的潜在更新dep1,但不会显示dep2. 但是,删除该allowMajorUpdates选项会给我返回有关开发的潜在更新。

我的理解是 Maven 对版本格式做了一些假设,例如数字,所以它不理解develop为有效版本并跳过执行。

最后,我希望能够使用该allowMajorUpdates选项,因为我宁愿不检查依赖项的新发布版本(我们从其他渠道获取信息),但是我不会看到我的develop更新。 ..

除了自己的比较规则之外,有没有办法让 Maven 检查像这样的格式develop

谢谢

0 投票
0 回答
66 浏览

maven - 为什么maven版本插件不推荐插件升级

根据插件页面,最新版本的 Maven 依赖插件是3.1.1.

在我的项目中,我看到:

./mvnw 依赖:帮助 | grep "Apache Maven 依赖插件" [INFO] Apache Maven 依赖插件 2.10

如果我跑./mvnw versions:display-plugin-updates | grep -i dependency | wc -l我会看到0

表明版本插件似乎不想让我知道我可以从 2.10 -> 3.1.1 更新

我正在使用Maven 3.5.4.

如果我明确地将其添加到我的 pom 中,则使用最新版本:

./mvnw 依赖:帮助 | grep "Apache Maven 依赖插件" [INFO] Apache Maven 依赖插件 3.1.1

有没有人能够教育我为什么会这样?它可能是我的项目中的错误配置,还是我误解了mvn:versions应该如何工作。

0 投票
1 回答
1625 浏览

maven - 在 Jenkins 管道中使用 maven 版本插件升级版本时出现错误的替换错误

在我的 jenkins 管道中运行此命令时出现错误的替换错误

这是这种情况下的错误消息 -

[代码] 运行shell脚本

/apps/jenkins/latest/workspace/ess-holani_master-3YNVBB6LFQA3QFK5NHYV57DW5HGSNALVGFJTJ4D6T72QVPJG4CDA/code@tmp/durable-374bc417/script.sh:第2行:-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion .nextIncrementalVersion}-SNAPSHOT:替换错误

脚本返回退出代码 1

但这有效->

此命令按预期提升我的 pom 版本。

运行上述命令时登录 jenkins shell

[代码] 运行shell脚本

mvn build-helper:parse-version 版本:set '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT' -DgenerateBackupPoms=false -DprocessAllModules -DgenerateBackupPoms=false

在这里也可以使用双引号 -

我想了解为什么我们需要在这个脚本中添加一个额外的 '\\\' ?

michael works 建议的答案。

我也试过这个

我在最后关闭 ' 之前删除了 \ 。这也奏效了。

0 投票
1 回答
120 浏览

maven - 从测试内部自动强制更新 pom 到较新的版本

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

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

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

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

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

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

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

0 投票
1 回答
491 浏览

java - 版本:属性的使用版本

据我了解,versions:use-releases不会更新用于在依赖项中定义版本的属性。

是否也可以更新这些属性?我看到我们有一个versions:update-properties,但它是为了将版本更新到最新版本,而不仅仅是用发布替换快照。

一个例子:

假设你有依赖

并且coutil.version被定义为7.0.0-SNAPSHOT

没有属性(即7.0.0-SNAPSHOT直接在版本标签中),versions:use-releases将替换7.0.0-SNAPSHOT7.0.0(如果存在)。现在有了属性的间接性,这不再发生。

我试图通过使用versions:update-properties不允许主要、次要和增量更新(-DallowMajorUpdates=false等)的地方来解决问题,但它产生了替换7.0.0-SNAPSHOT7.0.1-RC0002而不是7.0.0.

0 投票
0 回答
26 浏览

maven - Maven:根据星期几修改工件版本

我的一位同事给了我根据星期几修改 Maven 工件版本的任务。

周一至周六:SNAPSHOT 版本。

星期日:没有快照

有没有办法让这个想法成功?

我无法让它发挥作用,我尝试了不同的方法并且一次又一次地失败。我认为最好的想法/尝试之一是将 maven.timestamp 转储到变量中并用 regex-property@build-helper-maven-plugin 替换它。并且失败了。

但是在执行插件之前,版本已经设置好了。

我不知道这是否可能,如果可以,我该怎么做。

问候

编辑1:

包含年度周的工件构建版本,例如 1911。我们有 20 多个 Java 项目,全部通过父 pom.xml 连接,或通过从“主”父级继承的另一个父级连接。

构建在 TFS 上运行。根据项目的变化,所有依赖的项目都是自下而上构建的。因此,我将/必须实现已经在 parent.pom 中的逻辑,以便所有项目和派生的“子父母”都处理此逻辑。

0 投票
0 回答
74 浏览

maven - 如何更新父 POM 和相关子代?

首先是结构:我的父 POM 没有对子模块等的引用。有一个单独的 reactor-POM 包含该<modules>...</modules>部分 - 并且反应器 POM 也是父 POM 的子级(反应器 POM 中列出的模块继承自父 POM)。

最后但并非最不重要的是它是一个 Eclipse/Tycho 构建。

现在,我想更新整个项目的版本。从父 POM 开始,第一个问题是:如果子模块在不同的 POM(反应器)中声明,我如何强制父的子模块更新父版本?

0 投票
0 回答
31 浏览

java - Maven 版本插件不考虑 rules.xml

我已将 Maven 版本插件包含到我的多模块项目中。

我还在rules.xml项目根级别的专用文件夹中声明了一些规则。

当我运行mvn versions:update-properties -pl :foobar -DrulesUri=file:///${project.rootdir}/plugins/maven-versions-plugin/rules.xml时,似乎没有考虑到规则。

这是规则集:

例如,我可以看到一个依赖项已更新为1.0.0-alpha-3规则应禁止的版本。

所以我的第一个问题是我不知道插件是否真的考虑了规则集。运行相同的命令-X并没有提供任何信息。

有任何想法吗?

0 投票
0 回答
32 浏览

maven - maven-version-rules.xml - 如何只处理一些工件?

Maven 版本插件可以使用 maven-version-rules.xml 文件过滤掉特定工件的不需要的版本。所以它更像是一个黑名单。

我想只处理包名以 com.xxx.yyy 开头的工件

可能吗?