使用 springboot starter POM 进行开发和生产

Using springboot starter POMs for development and production

为什么 Springboot 的大多数示例项目都使用 starter POMs without a version? The documentation 没有提及正在使用的版本。

例如,使用 web starter 没有版本...

compile "org.springframework.boot:spring-boot-starter-web" 

...我假设根据 POM 提取最新快照?我想这对开发来说很方便,但话又说回来,我从来没有使用过没有 版本号的依赖项 ,所以这感觉很奇怪。

如果我使用特定版本配置依赖项,那么在生产中使用启动包是否安全,例如下面的示例,或者启动包是否应该仅用于开发?

  compile "org.springframework.boot:spring-boot-starter-web:1.2.1" 

这些示例没有定义任何版本,因为它们是由所谓的 依赖管理 部分管理的。 Maven 已有 such support 多年,我们添加了必要的功能以提供与 Gradle 类似的体验。

这实际上是一个非常明智的做法:如果你有一个包含多个模块的项目,你应该在一个中心位置合理化你正在使用的版本;您还应该确保您的项目使用一致版本的依赖项或一组依赖项。

这也是描述in the documentation

我建议您全面使用这种做法:在每个模块中写下版本意味着您需要升级时必须在多个地方更新它。当然,您应该适当地确定范围:不相关的项目不应共享相同的依赖管理部分,因为您可能希望独立升级库版本。