问题标签 [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 回答
331 浏览

maven - Maven 版本插件是否也从类路径中读取规则?

Maven 版本插件支持定义规则以自定义目标的版本解析过程为versions:display-plugin-updatesversions:display-dependency-updates. 规则文件的位置可以由 Maven Wagon 指定,其rulesUri背后的功能由 Maven Wagon 提供。

因此我想知道是否也支持在 Jar 中提供规则集?我想为多个项目设置一个规则。

0 投票
1 回答
1308 浏览

java - Maven 版本插件,在多模块项目中递归更新父级

我有以下 Maven 项目结构

现在,当我mvn install升级父版本并mvn versions:update-parent在聚合项目上运行时,我会首先更新聚合父版本并聚合继承版本,然后更新其模块的父版本以升级聚合,再次继承版本。这对于聚合项目只是随后使用相同的 Maven 命令构建所有模块这一事实非常有意义。

但是,Maven 版本插件并非如此。该示例仅升级聚合父级,但保持其模块(继承它)不变。这是插件中的错误吗?如何解决这个问题?

我知道我也可以mvn versions:set在聚合中运行以成功更新模块,但在这种情况下,我必须指定版本(而不是使用最新的父级)。我知道我也可以编写一个脚本来解决这个问题,但这很脏。

那么,如何使用 Maven 版本插件正确升级版本,其中项目利用继承、聚合并跨越多个存储库,并使用父 POM 作为版本声明的单一来源?

0 投票
0 回答
31 浏览

maven - 无法运行maven-versions-plugin:set 当父子关系是单向而不是双向时

在 Maven 中,您可以拥有一个父 pom / Reactor,它通过使用父modules部分来引用子模块,如下所示:

然而,每个孩子都可以自由地指定或不指定它的父母,它仍然会被构建;这意味着,以下配置在 forsimple-weathersimple-webapp pom.xmls 中是可选的:

使用maven-versions-plugin, 并尝试更新所有子模块的版本时,我发现如果您没有parent在子 pom.xml 中指定这些孩子。

你知道这是为什么,和/或我该如何解决这个问题?我应该提一下,我确实需要让我的孩子pom.xml有不同的父母,所以将 Reactor 的 pom.xml 作为他们的父母并不是一个真正的选择(例如,一个模块是一个客户端模块,它继承自公司的pom.xml客户端标准模块,而另一个是继承自公司服务器模块标准pom.xml的服务器模块)。

0 投票
5 回答
1470 浏览

maven - 在不操作 POM 文件的情况下更改 Maven 项目的版本

是否可以在不操作 POM 文件的情况下更改 Maven 项目的版本?

假设我有一个带有版本的 Maven 项目,1.5.0-SNAPSHOT但我想将它构建为1.5.46.

不幸的是,版本 Maven 插件修改了 POM 文件。

0 投票
1 回答
853 浏览

maven - Maven:pin 依赖版本,其中依赖由 BOM 管理

我们使用Maven BOM来管理一套库的依赖关系。BOM 的dependencyManagement 部分通常使用版本范围来指定这些库的版本,例如,[2.0,2.1)使用BOM 的Child pom.xml 不指定这些托管依赖项的版本。(编辑澄清:我们对第三方依赖项使用特定版本,范围用于正在开发的内部库,其中版本可以快速更改。我们定义版本范围以确保这些库之间的广泛兼容性,即都在同一个主要版本。)

(请注意,这不是一个多模块项目。使用 BOM 机制的库和服务项目只是将其声明为父级并从 Nexus 存储库中提取它。它们不是一起构建的。)

我们还有一些构建系统脚本,它们使用versions:resolve-ranges来固定出现在我们的库和服务pom.xml(不是BOM 的pom.xml)中的依赖项的版本。这些具有已解析范围的 pom.xml 被签入到源代码管理并标记,因此如果我们需要将部署回滚到早期版本,我们可以使用该标记的 pom.xml 来构建使用相同依赖项版本的构建原始构建,即使现在可以使用较新版本的依赖项(因此resolve-ranges如果我们重新运行它会提供较新版本)。

我刚刚注意到这两种机制不能很好地协同工作。在库或服务 pom.xml 上运行versions:resolve-ranges仅解析该 pom.xml 中的范围。依赖管理下的版本仍未指定,所以如果我们使用这个 pom.xml 进行新构建,我们将在构建时获得范围内的最新依赖版本。不是我们想要的!

有没有办法使用versions:resolve-ranges(或任何其他插件或技术)来解析托管版本并将它们粘贴到子 pom.xml 中?

这是一个人为的例子。

物料清单:

使用 BOM 的子项目(一个托管依赖项,一个非托管):

mvn dependency:tree显示依赖项的有效版本的片段:

[信息] com.maventest:mytest:jar:1.0-SNAPSHOT

[信息] +- commons-lang:commons-lang:jar:2.3:compile

[信息] \- junit:junit:jar:3.8.2-brew:test

mytest pom.xml 之后的依赖部分mvn versions:resolve-ranges

因此,正如预期的那样,解决了非托管依赖项。但托管的不是。我怎样才能让它也得到解决?

0 投票
2 回答
7187 浏览

spring-boot - maven更新版本具体依赖

我正在尝试使用以下命令更新我的 Spring Boot 项目中特定依赖项的版本。但是依赖版本没有得到更新。这是我正在使用的命令:

Spring Boot 项目的依赖:

我的本地 Maven 存储库.m2文件夹包含 2 个版本drools-sample-proj

  • 0.0.2-快照
  • 0.0.3-快照

我的 Spring Boot 项目pom.xml没有0.0.3-SNAPSHOT使用此构建命令更新该依赖项:

构建控制台日志:

Spring Boot 版本:1.5.9

Spring Boot 项目的pom.xml

我在 Spring STS IDE 中使用嵌入式 Maven。我在这里遗漏了什么还是我对更新的理解pom.xml不正确?任何见解都会有所帮助。

使用 mvn use-latest-versions 命令后的日志。

使用此命令时出现异常: mvn versions:use-latest-versions -Dincludes=com.example.brms:drools-sample-proj -X

0 投票
1 回答
244 浏览

java - Maven 的设置版本插件没有在子模块中设置父版本

当我试图自动化项目中所有 pom 的版本更新时,我无法解决这个问题。versions:set plugin/command 确实替换了 pom 的几乎每个版本,但没有替换 pom.xml 本身的父部分中定义的父 pom(另一个项目)的版本。

如您所见,这两个版本是不同的。这是在我执行以下命令之后:

预期的结果是,所有版本都是3.21.0-SNAPSHOT而不是 3.19.0-SNAPSHOT。有没有可能解决这个问题?

0 投票
1 回答
1554 浏览

maven - maven 版本插件不更新反应堆的版本

我目前正在尝试通过 Maven 的版本插件更新内部库的依赖项。该插件巧妙地更新了外部库,但对多模块库没有任何更改。

描述我以前做过的事情

我之前构建了它们,因此文件与新版本一起存在。

在每个子模块上,我使用 versions:set 设置一个新版本(我循环通过不同的子模块,因为父项目中每个库的主要和次要版本可能不同)并成功地将它们与旧版本链接起来。

现在我想使用版本插件在所有依赖项中设置新版本,然后重新构建。

当我执行:

他为所有外部库正确设置了版本,但没有为反应堆列表中的内部库设置版本。我添加了一些调试输出以显示变量在命令中被巧妙地使用。我缩短了 reactorProjects 的输出,但所有项目都正确列出了 afaik。当我有依赖项时也在日志中

例如。我看到他在寻找球衣零件,但不是内部零件。

编辑给出一个示例项目:

结构将是:test - subtest-a - subtest-b

poms是:

subtest-a的pom:

subtest-b的pom:

步骤:我做 mvn clean install

它构建得很好,接下来:将 subtest-a 的版本号增加到 1.1-SNAPSHOT

下一个: mvn 安装

我现在可以在 ~/.m2/repository 中看到 1.1-SNAPSHOT

接下来我运行给定的命令

即使更高版本出现在反应堆包中,他也不会增加版本号,并且不忽略反应堆内容的正确变量已提供给 maven。在调试中,我看到他甚至没有尝试获取 subtest-a 项目的版本号。

如果我使用 use-latest-release 运行相同的命令,他会将 jersey 的版本号从 1.19 增加到 1.19.4,因此该插件适用于外部依赖项,但不适用于通过反应器提供的依赖项。

为本地存储库释放 lockFile 时出现错误,但这可能与此有关,但我对此表示怀疑,因为我什至没有在 subtest-b 项目依赖项清单中看到 subtest-a 依赖项。

我将带有调试输出的日志放在 pastebin 上

https://pastebin.com/NNaSu5DJ

编辑 2

当将所有版本更新为非 SNAPSHOT 版本并使用目标“use-latest-release”和相同的命令行选项进行测试时,一切都按预期工作。如果 subtest-a 更改版本,则更新 subtest-b 的版本。所以它似乎是使用最新快照部分的一些错误。

0 投票
0 回答
187 浏览

maven - 在多模块 maven 项目中在反应器和父 pom 之间共享插件版本

我有一个多模块 maven 项目,它带有一个用于构建整个项目的反应器 pom,以及一个所有子模块都继承自的父 pom。

我需要在反应器和父 pom 中都有一个插件,这意味着我在子模块和用于聚合构建的反应器 pom 中分别使用插件。我想在一个文件中管理这个插件的版本,而不是每次都在两个文件中手动更改它。

例子:

项目结构:
--pom.xml //reactor pom - 聚合构建(包含插件)
----parent/pom.xml //父pom - 所有子模块都继承这个pom(包含插件)
---- a/pom.xml //模块a - 继承父/pom.xml
----b/pom.xml //模块b - 继承父/pom.xml
----c/pom.xml //模块c -继承父/pom.xml

注意:父 pom仅由子模块继承。不是通过反应堆。

非常感谢任何帮助,在此先感谢

0 投票
1 回答
334 浏览

maven - 无法访问 pom 属性中的 parsedVersion 值

我正在使用 Maven 插件:

解析项目版本。它工作正常:

但是如果我想在配置文件属性中使用属性 parsedVersion.majorVersion,它就无法解决。

任何想法?