首页 > 解决方案 > 如何替换 Maven 子模块 pom.xml 文件中的版本号?

问题描述

我有一个多模块 maven 项目,子模块从父项目属性获取版本号,并且正在创建工件。

我的问题是${global.version}在 nexus repo 的子模块的 pom.xml 中有变量。 commons-GOLD.jar通过从父项目获取版本号 (GOLD) 在 nexus 中成功进行。但是,它是 nexus 点${global.version}而不是 GOLD 中的 pom.xml 文件,当我将 commons-gold 添加为依赖项时,mvn 尝试拉cenatral/myProj.parent/$%7Bglobal.version%7D/myProj.parent-$%7Bglobal.version%7D.pom

MyProject 父项目 pom.xml

<version>${global.version}</version>
<packaging>pom</packaging>
<modules>
    <module>commons</module>
    <module>module2</module>
and so on

<properties>
    <!-- Unique entry point for version number management -->
    <global.version>GOLD</global.version>
</properties>

公共模块 pom.xml

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.hmg</groupId>
    <artifactId>myproj.parent</artifactId>
    <version>${global.version}</version>
</parent>

我想${global.version}用来自父 pom.xml 的属性替换上面的内容。即使有效的 pom 具有正确的值,nexus 也有原始的 pom,这会导致 maven 命令在解决依赖关系时失败。

尝试覆盖它,但这没有用。

mvn '-Dglobal.version=GOLD' dependency:tree

或者有没有办法如何忽略父pom进行依赖解析?

黄金神器在那里。

神器创作

POM.xml 包含变量,这会导致依赖解析问题。

pom.xml 内容

如果我在另一个版本为 1.0.0 或 GOLD 的项目中使用 commons 作为依赖项,则无论它寻求 ${version} 的版本是什么,因为它在 nexus 中的 pom。

XDrive:>无法在 com.xyz:common:jar:1.0.0 收集依赖项:无法读取 com.xyz:common:jar:1.0.0 的工件描述符:无法找到 com.xyz:myProj.parent:pom :${revision}http://10.80.100.155:8085/repository/myProj-group/被缓存在本地仓库,直到中央的更新间隔已经过去或强制更新才会重新尝试解析 -> [帮助1]

标签: javamavennexus

解决方案


我猜你想要这个插件和用法,例如:

mvn versions:set -DgenerateBackupPoms=false -DnewVersion=1.2.3

这将更新所有模块中的所有版本。


推荐阅读