使用 Maven Release 插件,更新非 pom 文件

Posted

技术标签:

【中文标题】使用 Maven Release 插件,更新非 pom 文件【英文标题】:Using Maven Release plug-in, update non-pom files 【发布时间】:2019-08-06 09:33:06 【问题描述】:

我有一个项目,我在其中使用maven-release-plugin 进行定期发布。我还有一些脚本文件,例如 start.shstop.sh,它们有助于仅使用一个命令通过多个步骤启动项目。该脚本包含类似的命令,(但不限于)

java -jar module-0.0.1-SNAPSHOT.jar

我的问题是,当我运行发布插件时,它会更新所有 POM 文件,但对这个脚本文件没有任何作用。我想更新这些脚本文件以及 POM 文件。这些脚本文件包含的版本号与 pom 文件和我提到的方式完全相同。 目前,我在每次发布后手动更新这些文件。 任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

Maven 发布插件确实就是发布 Maven 版本。 Maven 作为构建工具,构建工件并发布。

与各种脚本文件无关。所以你应该首先决定:

处理这些脚本是否完全是行家的责任。

如果是这样,您可以创建自己的插件来进行更改。或者您也可以使用过滤功能,Maven build helper plugin 来获取版本信息和程序集插件来准备分发。

否则,我看到 2 个可能的选项:

备选方案 1

用不真正包含任何 maven 相关版本信息的通用名称重命名版本化工件。

在这种情况下,脚本将始终相同并运行:java -jar my-module.jar

备选方案 2

使脚本复杂化,以便它能够找到文件并动态解析版本。然后它将在某个变量中记住文件的路径并运行java -jar $here_is_the_resolved_file_with_version.jar

【讨论】:

感谢您的回复。我认为#2是一个更好的选择,但我必须做一些功课。和 #1 一样,问题是我打算很快使用 docker,当我想在 docker-compose 关闭期间清理本地图像时,图像的版本会导致问题。 另外,我读到(未尝试过)我必须将 jar 的版本也放入 docker-compose 和 Dockerfile 中。有什么不同的解决方案吗?任何建议。 Docker 是一个不同的故事,技术较少,但更多的是“你如何看待版本控制的过程”。您可能会为每个版本提供 docker 映像,但您也可以为映像设置标签或许多标志:例如“最新”和“1.2.3”(版本)因此您可以构建编排,使其始终运行“最新” " 图像的标签。但是在镜像内部,您仍然需要决定是否值得发布新的 maven jar,或者您更愿意依赖 docker 镜像版本控制。 由于我很新,知识也很少,所以我无法理解你所说的。 哦,那我只能建议按部就班了。从maven开始,选择2(脚本修改很容易实现)。然后学习 docker 并随手决定......

以上是关于使用 Maven Release 插件,更新非 pom 文件的主要内容,如果未能解决你的问题,请参考以下文章

更新 maven 多模块项目的位置 scm url

Mercurial Maven Release 插件问题

我可以在 maven-release 插件之后运行自定义 maven 插件吗?

maven release-plugin 在非交互模式下的使用

gradle-release 插件 + maven 发布插件

Jenkins 中带有 Maven Release 插件的 Clearcase 它应该如何工作?