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 检查远程存储库中的所有快照,并在本地存储库过期时更新它。
我有 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 检查远程存储库中的所有快照,并在本地存储库过期时更新它。