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

r55awzrz  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(1162)

我有一个多模块maven项目,子模块从父项目属性获取版本号,并且工件被很好地创建。
我的问题是 ${global.version} nexus repo中子模块pom.xml中的变量。 commons-GOLD.jar 通过从父项目获取版本号(gold),成功地在nexus中执行。但是,它是nexuspoint中的pom.xml文件 ${global.version} 而不是黄金,当我加入共同点黄金作为依赖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来解析依赖关系?
金器在那里。

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/已缓存在本地存储库中,在经过central的更新间隔或强制更新之前,不会重新尝试解析->[帮助1]

j1dl9f46

j1dl9f461#

这里的问题很简单,就是flattemaven插件的使用没有正确完成。
此外,您只能使用与此设置相关的以下属性:
${修订版}
${sha1}
${changelist}
除此之外,您可以使用版本maven插件,而无需定义任何属性。除此之外,您可以使用release插件来增加版本号,并且通常不需要定义属性(仅在特定情况下)

ldxq2e6h

ldxq2e6h2#

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

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

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

相关问题