如何替换 Maven 子模块 pom.xml 文件中的版本号?
How to replace version number in Maven submodule pom.xml files?
我有一个多模块 maven 项目,子模块从父项目获取版本号 属性 并且工件正在创建得很好。
我的问题是在子模块的 pom.xml 中有 ${global.version}
变量在 nexus 仓库中。
commons-GOLD.jar
通过从父项目获取版本号 (GOLD) 成功地在 nexus 中发生。但是,它是连接点 ${global.version}
中的 pom.xml 文件而不是 GOLD,当我添加 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
或者有什么方法可以How to ignore parent pom for dependency resolution?
GOLD神器就在那里。
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]
我猜你想要this plugin和用法,例如:
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=1.2.3
这将更新所有模块中的 所有 版本。
这里的问题只是 flatten-maven-plugin 的用法不正确。
此外,您只能使用与此设置相关的以下属性:
- ${修订版}
- ${sha1}
- ${更改列表}
除此之外,您可以在不定义任何 属性 的情况下使用 versions-maven-plugin。除此之外,您可以使用增加版本号的发布插件,通常不需要定义 属性 (仅在特定情况下
我有一个多模块 maven 项目,子模块从父项目获取版本号 属性 并且工件正在创建得很好。
我的问题是在子模块的 pom.xml 中有 ${global.version}
变量在 nexus 仓库中。
commons-GOLD.jar
通过从父项目获取版本号 (GOLD) 成功地在 nexus 中发生。但是,它是连接点 ${global.version}
中的 pom.xml 文件而不是 GOLD,当我添加 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
或者有什么方法可以How to ignore parent pom for dependency resolution?
GOLD神器就在那里。
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]
我猜你想要this plugin和用法,例如:
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=1.2.3
这将更新所有模块中的 所有 版本。
这里的问题只是 flatten-maven-plugin 的用法不正确。
此外,您只能使用与此设置相关的以下属性:
- ${修订版}
- ${sha1}
- ${更改列表}
除此之外,您可以在不定义任何 属性 的情况下使用 versions-maven-plugin。除此之外,您可以使用增加版本号的发布插件,通常不需要定义 属性 (仅在特定情况下