问题标签 [versions-maven-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.
maven - 使用 release+versions 插件完全自动化发布过程
如果 Maven 大师社区可以帮助我完成以下任务,那就太好了。
我想以批处理模式运行发布过程的方式自动化哈德逊中 Maven 模块的发布过程(不需要从控制台询问任何内容)。目前我使用通用步骤release:prepare
(<preparationGoals>versions:update-parent clean verify</preparationGoals>
在提交之前将父级更新到最新版本)+ release:perform
. 但是我希望 Maven 执行以下操作:
在准备步骤中的某个时候:
groupId
对于与当前模块和父模块匹配的所有依赖项,替换-SNAPSHOT
为发布版本(例如versions:use-releases -Dincludes=???
)。
发布后的某个时候:
groupId
对于与当前模块和父模块匹配的所有依赖项,将发布版本替换为-SNAPSHOT
版本(例如versions:use-latest-snapshots ...
)。
例子:
在模块被标记之前转换为:
并在发布成功后转化为:
我觉得它需要混合
versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
但我不确定这样做的最佳方法是什么。尤其是尽可能少的提交会很好:困难在于在版本检查reparationGoals
之后运行。-SNAPSHOT
所描述的项目不是一个多模块项目,因为父 POM 没有通过<modules>
. 单片机结构如下:
依赖项是:
项目的父 POM ( myproject-parent
) 将很少发布,因此将首先发布。然后myproject-api
(如有必要)然后myproject-impl
。
eclipse - Eclipse 中的 Maven 插件版本
如何将 Versions-Maven-Plugin 添加到我的 Eclipse 项目中?
我尝试了Add Plugins
菜单选项,但似乎无法找到插件。
maven - 如何在获取最新的工件版本之前使版本-maven-plugin 更新 maven-metadata-*.xml 更新?
我正在使用versions-maven-plugin自动查找在许多不同的nexus 存储库中找到的最新发布/快照版本的maven 工件。
似乎该插件正在我的本地存储库中使用maven-metadata-$REPO.xml(其中 $REPO 是存储库的 id)文件来查找工件的最新版本。
我经常需要mvn:release一个工件,紧接着,我需要根据刚刚发布的工件更新另一个工件,但是versions-maven-plugin找不到它,因为它的最新版本列在那些 xml 文件中,甚至尽管它实际上存在于关系中。
我希望你们中的一些人能提出我如何解决问题的想法。谢谢你的时间。
versioning - 版本-maven-plugin 不检索nexus 上的最新版本?
我正在尝试使用(部分成功)versions-maven-plugin从我的本地和nexus 存储库中检索最新版本/快照版本以更新 maven 项目。运行此插件以更新版本时,我注意到以下行为:
即使我知道nexus 中有更新版本,但不在我的本地存储库中,它也找不到最新版本,而是从本地存储库中找到最新版本。如果我从本地 repo 中删除我想要更新的工件的所有 maven-metadata*.xml 文件,它会下载最新的 maven-metadata*.xml 文件并正确找到最新版本。
我看到它使用2.0.6 og 所有 maven API,驱动整个更新机制的方法是从接口ArtifactMetadataSource中检索AvailableVersions()并由MavenMetadataSource实现。
我的问题 如何更改此插件的代码以始终下载最新的 maven-metadata*.xml 文件,以便获得最新版本?或者如果有任何其他可靠的方法可以做到这一点..
谢谢你的时间。
maven - 使用版本插件在新版本后更新 Maven 属性
我在 maven/jenkins 中遇到了一个多模块项目的问题。例如我的结构是这样的:
例如,ModuleA 对 ProjectB 中的某些内容具有依赖关系,该依赖关系在 ModuleA 的 pom 中定义,除了仅定义为属性并从 ProjectA 的属性部分继承的版本。
我想自动化发布过程,以摆脱所有 pom 中所有版本的手动更新。因此,在发布 ProjectB 之后,我将在 ProjectA 中添加所有引用。
编辑 更准确地说,我想发布 ProjectB,它必须包含 ProjectA 的发布(因为依赖关系),并且在 ProjectA 的新快照中,我想要引用最新的 ProjectB。
如果在同一个 pom.xml 中指定依赖项和版本号,maven 插件版本可以很好地做到这一点。如您所见,我的问题是(我在推测)当版本插件尝试检查 ProjectA 的 pom 中的属性字段时,该属性不能与依赖项关联。而且我猜版本插件看起来在有效的 pom 上,因为它可以发现 ModuleA 的 pom 中的依赖项应该被更新。它只是无法更新它,因为它没有在那里定义。
对于可以将我的属性保留在父 pom.xml 中的解决方案将非常有必要。
谢谢
maven - Maven 版本插件:版本比较在哪里
我正在阅读有关 Maven 版本插件的信息:http: //mojohaus.org/versions-maven-plugin/examples/advancing-dependency-versions.html
为了这个目标:“versions:use-next-releases 在 pom 中搜索所有非 SNAPSHOT 版本,这些版本都是较新的版本,并用下一个版本替换它们。”
“已经是较新的版本”是什么意思,它在哪里寻找较新的版本?它是否在检查中央存储库是否有更新的版本?
maven - 版本插件不更新子模块,只更新父模块
我的父 pom 的模块定义如下:
父 pom.xml
以下是子模块 pom 文件:
proj2 pom.xml
proj1 pom.xml
但是当我使用版本插件时,它只设置父版本号而不是它的模块。这是我正在使用的命令:
这是输出:
正在跳过子模块。我怎样才能使子模块也被更新而不仅仅是父模块?
更新:我尝试从子模块中删除版本标签,所以子模块现在是:
但是子 pom 文件中没有更新版本号。
更新:这是我认为这个过程的工作方式,请随时提出修改建议:
理论上(我没有测试过)在嵌套文件结构中,当目标运行时,Maven 将更新每个子模块的单独版本号:'ons:set -DnewVersion=1.0.2-SNAPSHOT'。
但是,在平面文件结构中,如果父模块具有相同的版本,则不需要在子模块中指定版本号。这是因为如果不设置子版本号将使用父版本号。因此,要更新父模块的所有子模块,只需更新父模块的版本号,如果所有子模块都没有设置版本号,那么它们将具有与父模块相同的版本号。
java - Maven 版本插件,限制版本:update-properties 损坏
我有一个多模块 Maven 项目,其中模块共享依赖项。通过共享,我的意思是使用相同的依赖项。然而,每个模块都自己声明依赖关系。为了保持理智(是的,maven,理智,我知道),并让所有模块使用相同版本的依赖项,父 pom 使用版本号声明属性:
并且所有模块都使用如下:
我对这个设置非常满意,因为它允许我在 1 个地方更改依赖项版本。
现在我有一堆我自己维护的依赖项。这些的发布是自动的并且非常简单,基本上:
现在我想进一步自动化并在我运行的主项目中:
(基本上,如果需要,我还运行:“mvn 版本:使用发布”来更改通常的依赖项,但这超出了这个问题的范围)。
运行此更新属性后,我的主要项目 pom 中的属性指向发布(这很好)。但是,如果我的模块使用属性来定义其他依赖项的版本并且这些项目有更新的版本可用,那么这些属性也会更改。
有没有办法限制更新属性造成的损害?版本:use-release 需要包含属性,所以我只能在我的人工制品上使用它。找不到更新属性的类似内容。
我可以恢复除父级之外的所有 pom 并仅提交/推送,但这似乎并不优雅。
maven - Maven 发布和版本 Maven 插件
在进行快照/发布时,依赖项的编号/版本控制策略是什么?
一个由 15 名开发人员组成的团队,20 个 Maven 父项目 = 总共 70 多个 POM,包括子模块 POM。目前有很多依赖关系,这 70 个依赖项中的大多数依赖于其中一个。
过去的:
所有 POMS 都有1.0.0-SNAPSHOT
其版本和依赖项标签。它使用 .它上传到 Nexus 存储库mvn deploy
。
当下:
mvn release
我们最近开始做。所以现在所有 20 个父 POM1.0.1-SNAPSHOT
和它们的发布版本1.0.0
都位于 Nexus 中。所有<dependencies>
标签现在都指向1.0.0
问题:
开发人员不想指向发布版本。他们需要来自同行的前沿开发版本1.0.X-SNAPSHOT
,无论它是否不稳定。
SCM只想指向RELEASE
版本,因为他必须mvn release
每周执行一次,这将失败,因为它指向快照版本。
问题:
现在我知道了版本插件,但问题是,我在 POM 中放了什么,以便双方都通过运行自己的mvn versions:
命令版本感到满意。最好 POM 应该指向 SNAPSHOTS 以便 15 人满意,并且当 SCM 发布时,他可以运行 amvn versions:something
并且所有内容都转换为RELEASE
版本来代替SNAPSHOTS
. 然后返回给开发人员的 SNAPSHOTS。
maven - 运行 Maven 版本时的不同行为:使用最新版本目标
我正在运行的命令是:
我的 pom 中有一个版本,例如 1.2.3-5-SNAPSHOT,我想将它更新到最新发布的版本。例如,这可能是 1.2.3-7,或者 1.2.3-5-SNAPSHOT 可能尚未发布,这意味着最新版本是 1.2.3-4。
在我的本地 Windows 机器上运行 maven 命令时,版本插件正在按我的需要运行,但是当在远程 Linux 机器上运行它时(我真的需要它)它没有。
我的本地盒子显示:
在我的本地 Windows 机器上运行 maven 命令时,版本插件正在按我的需要运行,但是当在远程 Linux 机器上运行它时(我真的需要它)它没有。
而远程框显示:
运行时:
两个框的输出显示相同的版本号:
有谁知道我如何获得与我在本地机器上相同的行为?或者对我如何进一步调查有任何建议?