我正在为我的团队创建一个公共库,可以由我们团队的不同微服务使用。公共库将是service-starter,它包括:特定的spring引导、spring版本和其他兼容版本和依赖项。是否有可能使用maven来保护我们的整个团队必须使用特定的必须版本一些maven依赖项,比如spring boot版本,应该在整个团队中通用(如果需要,我们也会有其他maven依赖项,可以在各自的微服务pom中覆盖)
你不能阻止你的团队在他们的项目中定义他们自己的版本。但是,您可以在项目中添加<dependencyManagement>
标记,该标记将定义您希望他们使用的版本,因此他们不必决定。但是,同样,没有什么可以阻止他们覆盖这些。
您可以创建一个您想要的父pom,并在<dependencyManagement>
中放入您希望使用该父pom的应用程序使用的依赖项。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
所以如果另一个应用程序使用了你上面声明的父节点,并使用了作为依赖
<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
</dependency>
</dependencies>
(它不包含任何特定的版本),它将默认检索在1.0
的父节点中声明的版本
但是子程序总是可以自由地声明他们自己的版本,如果他们想的话,并使用它来代替,有效地覆盖父程序
中声明的内容。<dependencies>
<dependency>
<groupId>group-a</groupId>
<artifactId>artifact-a</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
关于Maven中依赖管理的更多信息