[英]How to replace version number in Maven submodule pom.xml files?
我有一个多模块 maven 项目,子模块从父项目属性中获取版本号,并且正在创建工件。
我的问题是在 nexus 存储库的子模块的 pom.xml 中有${global.version}
变量。 通过从父项目获取版本号 (GOLD), commons-GOLD.jar
成功地发生在 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 包含变量,导致依赖解析问题。
如果我在另一个版本为 1.0.0 或 GOLD 的项目中使用 commons 作为依赖项,则无论版本如何,它都会寻求 ${version} ,因为它的 pom 在 nexus 中。
XDrive:>无法在 com.xyz:common:jar:1.0.0 处收集依赖项:无法读取 com.xyz:common:jar:1.0.0 的工件描述符:找不到 com.xyz:myProj.parent:pom :${revision} in http://10.80.100.155:8085/repository/myProj-group/已缓存在本地仓库中,除非central更新间隔已过或强制更新,否则不会重新尝试解析-> [帮助1]
这里的问题很简单,就是没有正确使用flatten-maven-plugin 。
此外,您只能使用与此设置相关的以下属性:
除此之外,您可以在不定义任何属性的情况下使用 versions-maven-plugin。 除此之外,您可以使用增加版本号的发布插件,通常不需要定义属性(仅在特定情况下)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.