【发布时间】:2022-01-09 07:03:40
【问题描述】:
我在用变量替换 pom.xml 文件中父块中的版本时遇到错误。
对于属性选项卡,它工作正常,但是当我将版本更改为在父块中的“mvn clean install”之前导出的变量时,构建会失败。
错误如下所示。
“由 org.sonatype.aether.transfer.ArtifactTransferException 引起:无法将工件 org.springframework.boot:spring-boot-starter-parent:pom:${env.SPRINGBOOTVERSION} 从/到 abc -repos (https://continuousintegration.abc.com/artifactory/abc-repos): 路径中索引 122 处的非法字符:https://continuousintegration.abc.com/artifactory/abc-repos/org/springframework/boot/spring-boot-starter-parent/${env.SPRINGBOOTVERSION}/spring-boot-starter-parent-${env.SPRINGBOOTVERSION}.pom"
在解析 pom.xml 之前,不会为父 pom 替换变量。
下面是被替换的 pom.xml 的代码块。
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>${env.SPRINGBOOTVERSION}</version> ---------> replaced version by variable
<relativePath />
</parent>
这里的 maven 版本是 3.0.5 ---(尝试使用 3.8.1 进行本地构建)
对此的任何解决方案都会有所帮助。
仅供参考:
变量以以下格式存储在文件中。
---> 导出 SPRINGBOOTVERSION=1.2.3
然后使用 source 命令获取到 shell。
另外,在 pom.xml 的属性块中给出的变量是 被maven接受,它也在工作。只是有问题 这里是父块。
【问题讨论】:
-
真的使用 Maven 3.0.5 吗?使用 8 年以上的旧软件...还问你为什么喜欢在这里使用变量版本?
-
即使它不适用于 3.8.1,我也在本地构建时尝试过。
-
对于 3.8.1 也在这里遇到同样的错误
-
对此的简单回答是:不可能。我的问题一直是:你喜欢做什么?您要解决的问题是什么?
-
我需要将所有依赖项作为变量存储在一个文件中,这样,每个更新的版本都很容易更改,因此,我们只需要更改 1 个文件,而不是整个 pom文件。因此,所有版本都添加到 var.env 文件中并在 pom.xml 中替换,因此,如果有任何更改,我们只需要更改 var.env。
标签: java spring-boot maven maven-2