我们尝试仅使用发行版来构建模块。
我们配置为在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组存储库。 -但是我们想在客户端解决此问题。 -此外,snapshots.enabled = false也是多余的。
答案 0 :(得分:0)
虽然仍然可以使用版本范围,但如今这已经很不常见了。
您可以尝试在构建之前调用versions:resolve-ranges
,以便将版本解析为具体版本。