从所有 Maven 子模块中删除 SNAPSHOT,但保留版本

发布于 2025-01-11 14:15:18 字数 1208 浏览 0 评论 0原文

用例

我正在开发一个多模块项目,并且尝试为具有不同版本的所有子模块删除 -SNAPSHOT

示例

出于本练习的目的,我们可以假设有两个子模块。文章 Maven 简单项目原型从多模块创建原型可以参考项目来进行后续操作。

Parent - 1.0.0-SNAPSHOT
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0-SNAPSHOT

结果

当我运行 mvn versions:set -D removeSnapshot -D processAllModules 时,我预计版本会发生如下所示的更改。

Parent - 1.0.0
ChildA - 1.2.3
ChildB - 1.0.0

但是,似乎 -SNAPSHOT 已从所有版本中删除,除了与父版本具有不同版本的子版本之外。

Parent - 1.0.0
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0

有没有办法运行 mvn versions:set 命令来遵循版本号,同时删除 -SNAPSHOT 后缀?


UPDATE #1

运行 mvn versions:set -D removeSnapshot=true 与运行 mvn versions:set -D removeSnapshot -D processAllModules 产生相同的结果。

Parent - 1.0.0
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0

Use Case

I am working on a multi-module project and I am trying to drop -SNAPSHOT for all child modules that have different versions.

Example

For the purposes of this exercise we can assume there are two sub-modules. The articles Maven Simple Project Archetype and Create an archetype from a multi-module project can be referenced to follow along.

Parent - 1.0.0-SNAPSHOT
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0-SNAPSHOT

Results

When I run mvn versions:set -D removeSnapshot -D processAllModules I expect the versions to change as indicated below.

Parent - 1.0.0
ChildA - 1.2.3
ChildB - 1.0.0

But, it seems -SNAPSHOT is stripped from all versions except the children that have a different version from the parent.

Parent - 1.0.0
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0

Is there any way to run the mvn versions:set command to honor the version number, while stripping the -SNAPSHOT postfix?


UPDATE #1

Running mvn versions:set -D removeSnapshot=true yields the same results as running mvn versions:set -D removeSnapshot -D processAllModules.

Parent - 1.0.0
ChildA - 1.2.3-SNAPSHOT
ChildB - 1.0.0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

输什么也不输骨气 2025-01-18 14:15:18

根据 多模块项目的 Maven Enforcer 文档...

Maven 中的最佳实践是所有子项都继承版本
他们的父版本并且不定义如下所示的新版本:

<parent>
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>module1</artifactId>
(..)

其他用例可以在上面的链接文章中找到。

As per the Maven Enforcer documentation for multi-module projects...

The best practice in Maven is that all childs inherit the version from
their parent and don't define a new version which looks like this:

<parent>
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>module1</artifactId>
(..)

Additional use cases can be found in the linked article above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文