这是一个非常基本的问题,但是当我们将后缀 SNAPSHOT 添加到 AEM 项目的 POM.xml 文件时究竟会发生什么?
<version>1.0.0-SNAPSHOT</version>
<version>1.0.0</version>
我问的是 AEM 中使用的 OSGi 容器 Apache Felix 的行为。我相信这与是否将捆绑包作为新捆绑包捡起有关。
如果存在多个具有相同符号名称的包,OSGi 安装程序总是尝试安装包的最高版本。
但是,当您重新安装具有发布版本(而不是快照)的现有捆绑软件时,即使捆绑软件中发生了更改,OSGi 安装程序也会忽略该捆绑软件。
然而,如果您使用快照版本重新安装包,OSGi 安装程序将使用所有新更改更新包。
Apache Sling OSGi 安装程序的捆绑处理部分将对此提供更多见解。
添加了 SNAPSHOT 后缀以指示将新版本部署到 maven 存储库。通常在开发阶段,如果开发人员配置 pom.xml 以通过添加依赖标记和最新版本来获取最新代码,这将从存储库中获取最新的代码。
来自http://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401。
SNAPSHOT 版本引用使 Maven 能够在依赖项目构建时获取最近部署的 SNAPSHOT 依赖项实例。请注意,SNAPSHOT 会不断变化。每当代理部署工件时,它都会在共享存储库中更新。SNAPSHOT 依赖项在开发人员的机器上重新获取,或者在每次构建中更新。这可确保更新依赖项并与最新更改集成,而无需更改项目依赖项引用配置。
持续集成
包含基于 Maven 项目(例如 Hudson)定义和执行作业的能力的连续构建服务器可以配置为识别 SNAPSHOT 工件何时更新,然后重建依赖于更新后的工件的项目。
对于 OSGI 安装程序,它只会安装新版本。但是对于带有快照限定符的包,它无论如何都会安装。
来源:sling.apache.org/documentation/bundles/osgi-installer.html#versions-and-snapshots