如何替换Maven子模块pom.xml文件中的版本号?

达夫·古布兹(Davut Gurbuz)

我有一个多模块Maven项目,子模块从父项目属性获取版本号,并且构件创建得很好。

我的问题是${global.version}在nexus repo的子模块的pom.xml中变量。commons-GOLD.jar通过从父项目获取版本号(GOLD),成功地在nexus中进行。但是,它是在nexus点中的pom.xml文件${global.version}而不是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

还是有一种方法可以忽略依赖关系的父pom?

那里有金制品。

工件创造

POM.xml包含变量,这将导致依赖关系解决问题。

pom.xml内容

如果我将Commons用作版本1.0.0或GOLD的另一个项目中的依赖项,则无论其版本如何,由于其pom的关系,它都会寻求$ {version}。

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/中)已缓存在本地存储库中,只有在Central的更新间隔过去或强制更新后,才会重新尝试解析-> [帮助1]

赫马尔拜兹

这里的问题很简单,就是flatten-maven-plugin的使用不正确。

此外,您只能使用与该设置相关的以下属性:

  • $ {revision}
  • $ {sha1}
  • $ {changelist}

除此之外,您可以使用versions-maven-plugin,而无需定义任何属性。除此之外,您还可以使用发布插件来增加版本号,通常不需要定义属性(仅在特定情况下)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章