gpt4 book ai didi

java - 如果定义了父 pom,则不会发生存储库 url 的 Maven 属性替换

转载 作者:行者123 更新时间:2023-12-01 06:00:53 27 4
gpt4 key购买 nike

我遇到一个问题,当且仅当定义了父 pom 时,maven 才无法正确地将属性替换到我的存储库 URL 中。这尤其是一个问题,因为父 pom 位于远程存储库中,所以我需要定义父 pom。

最小可重现示例:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.group</groupId>
<artifactId>parent-artifact</artifactId>
<version>1.0.0</version>
<relativePath/>
</parent>

<groupId>com.group</groupId>
<artifactId>project-artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>project</name>
<description>test project</description>

<properties>
<nexus.url>https://nexus.myorganization.net</nexus.url>
</properties>

<repositories>
<repository>
<id>nexus-server</id>
<url>${nexus.url}/repository/maven-releases/</url>
</repository>
</repositories>

</project>

使用这个 pom,我收到错误消息 Cannot access ${nexus.url}/repository/maven-snapshots/...很明显,它并没有用实际值(value)取代该属性(property)。

如果我删除 <parent> POM 部分,然后属性替换突然开始正常工作:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.group</groupId>
<artifactId>project-artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>project</name>
<description>test project</description>

<properties>
<nexus.url>https://nexus.myorganization.net</nexus.url>
</properties>

<repositories>
<repository>
<id>nexus-server</id>
<url>${nexus.url}/repository/maven-releases/</url>
</repository>
</repositories>

<!-- adding this dependency so that Maven is forced to download from the repository -->
<dependencies>
<!-- some dependency here -->
</dependencies>

</project>

我知道它工作正常,因为我可以在 Maven 的输出中看到行 Downloading from nexus-server: https://nexus.myorganization.net/repository/maven-releases/...

有什么想法吗?

最佳答案

感谢评论者,原因是在父pom解析完成之后才进行属性解析,因此当前pom和父pom之间不存在属性冲突。

更多详情请参见门票 MNG-2569MNG-624 (source)。

关于java - 如果定义了父 pom,则不会发生存储库 url 的 Maven 属性替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59650854/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com