我们尝试只使用发布版本构建模块。
我们配置为不使用来自settings.xml
:远程存储库的SNAPSHOTS
<repositories>
<repository>
<id>public</id>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>http://nexus...
但是当运行mvn package
时,我们得到Non-resolvable parent POM [...] Could not find artifact [...]:pom:0.1.2-SNAPSHOT
。
此错误与本地存储库中的maven-metadata-public.xml
有关。Maven"知道"必须有一个0.1.2-SNAPSHOT
:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>***</groupId>
<artifactId>***</artifactId>
<versioning>
<latest>0.1.2-SNAPSHOT</latest>
<release>0.1.1</release>
<versions>
<version>0.1.1</version>
<version>0.1.2-SNAPSHOT</version>
</versions>
<lastUpdated>20181212082933</lastUpdated>
</versioning>
</metadata>
如何强制Maven使用release
版本而不是latest
版本
已尝试:versions:use-releases
versions:use-latest-releases
一个可能的解决方案是添加一个仅包含版本的Nexus组存储库。-但我们希望在客户端解决这个问题。-快照.enabled=false也是多余的。
虽然使用版本范围仍然是可能的,但现在已经不常见了。
您可以尝试在构建之前调用versions:resolve-ranges
,以便将版本解析为具体版本。