我对Maven快照的含义有点困惑,为什么我们要构建一个?


当前回答

SNAPSHOT值指的是沿着开发分支的“最新”代码,并不能保证代码是稳定的或不变的。相反,“发布”版本(任何不带SNAPSHOT后缀的版本值)中的代码是不变的。

换句话说,SNAPSHOT版本是最终“发布”版本之前的“开发”版本。SNAPSHOT比它的发行版“更老”。

在发布过程中,x.y-SNAPSHOT的一个版本更改为x.y。发布过程还将开发版本增加到x.(y+1)-SNAPSHOT。例如,版本1.0- snapshot发布为版本1.0,新的开发版本为版本1.1-SNAPSHOT。

其他回答

“发行版”是一个没有更改的版本的最终版本。

“快照”是一个可以被具有相同名称的另一个构建所替换的构建。这意味着构建可以在任何时候更改,并且仍然处于积极的开发中。

对于基于相同代码的不同构建,您有不同的工件。例如,你可能有一个调试和一个没有。一个用于Java 5.0,一个用于Java 6。一般来说,一个版本能满足你所有的需求会更简单。;)

通常在maven中,我们有两种类型的构建 1)建立快照 2)制定版本发布

快照构建:快照是特殊版本,它指示当前部署副本,不像常规版本,maven检查远程存储库中的每个构建的版本 因此快照构建只是开发构建。 发布版本:发布意味着在版本中删除快照,这些是常规的构建版本。

在开发阶段,Maven快照每天都会寻找更新的更高版本(如果在nexus存储库中可用),然后在本地下载它以备下一次构建。

您可以在存储库定义中设置四个选项

总是这样, 每日(默认), 间隔, 永远,

注意:在产品版本中,我们不应该依赖于快照版本。

A Maven SNAPSHOT is an artifact created by a Maven build and pretends to help developers in the software development cycle. A SNAPSHOT is an artifact (or project build result ) that is not pretended to be used anywhere, it's only a temporarily .jar, ear, ... created to test the build process or to test new requirements that are not yet ready to go to a production environment. After you are happy with the SNAPSHOT artifact quality, you can create a RELEASE artifact that can be used by other projects or can be deployed itself.

在你的项目中,你可以使用Maven的pom.xml文件中的version元素定义一个SNAPSHOT:

<groupId>example.project.maven</groupId>
<artifactId>MavenEclipseExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Maven pom example</description>

如果你想更好地理解Maven,你也可以看看这些文章:

https://connected2know.com/programming/menu-maven-articles/

快照仅仅意味着Maven将根据您的配置检查特定依赖项的最新更改。快照是不稳定的,因为它是在开发中,但如果在一个特殊的项目需要有最新的变化,你必须配置你的依赖版本为快照版本。这种情况发生在拥有多个产品的大型组织中,这些产品彼此密切相关。