在Maven构建期间如何忽略SNAPSHOT依赖关系?

时间:2018-12-12 11:23:24

标签: maven nexus dependency-management

我们尝试仅使用发行版来构建模块。

我们配置为在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也是多余的。

1 个答案:

答案 0 :(得分:0)

虽然仍然可以使用版本范围,但如今这已经很不常见了。

您可以尝试在构建之前调用versions:resolve-ranges,以便将版本解析为具体版本。