Maven SNAPSHOT 被认为是 RELEASE

Maven SNAPSHOT are taken into account as RELEASE

我有 Java 个项目是用 maven 编译的。每个项目都有自己的 POM,如下所示:

<project ...>
    <groupId>group.id</groupId>
    <artifactId>scripts</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    ...
    <dependencies>
          <dependency>
              <groupId>global</groupId>
              <artifactId>common</artifactId>
              <version>10.2.3-SNAPSHOT</version>
          </dependency>
    </dependencies>
    ...
</project>

发布快照

如果我执行 mvn install,它会在我第一次执行命令时 compile/install 它。 下一次,它不会安装它。它接缝 maven 将其视为 RELEASE,无论它是 SNAPSHOT。 我可以在安装包中包含的时间戳中看到这一点。如果我不更改版本号,时间戳也不会更改。

我想我错过了 maven 配置,但这对我们的开发影响很大,因为我们不得不为每个测试部署更改项目版本(及其依赖项)。

备注: 我正在使用 Maven 3.3.3。看起来我在 3.1.0 中没有这种行为(我不是 100% 确定旧版本。反正很旧)。 Maven 与 Nexus 相结合。也许问题出在它身上,我关注的对象不对。

感谢您的提示。

编辑: 问题是 : 我怎样才能让 Maven 每次都安装 SNAPSHOT,而不是像 RELEASE 那样第一次安装?

编辑已解决

我们总是mvn install编译和安装源代码。由于某些原因,我们没有使用 mvn clean 命令。 重新编译所有源代码的正确 Maven 命令是 mvn clean install.

谢谢@VinayVeluri

如果代码更改需要版本,请为代码库自己版本化,尽管这很麻烦给出了版本控制的想法。

如果必须自动更新快照,则使用

mvn -u clean install

添加后,此命令行 arg 会强制 Maven 检查远程存储库中的所有快照,并在本地存储库过期时更新它。

source