在maven - Spring Boot - parent pom when you already have a parent pom - Stack Overflow中,使用了
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
来实现“利用 Spring Boot 管理 dependency 的版本”。那么有没有什么方式可以实现“利用 Spring Boot 管理 plugin 的版本”呢?
1
SoloCompany 2020-08-20 17:27:14 +08:00 1
应该不可以
首先, 一个无关的事情, 使用 <scope>import</scope> 导入存在的比较明显的问题是, 无法覆盖里面定义的 properties, 比如你希望改变所 import 的 kotlin 版本, 就不得不把所有依赖的 kotlin artifacts 重新写一遍 而如果直接使用 org.springframework.boot:spring-boot-dependencies 作为 parent (也就是继承), 则没有这个问题, 很轻松的就能实现覆盖 <properties> <kotlin.version>1.4.0</kotlin.version> </properties> 回到你说的问题, scope=import 只能导入 dependency management 不能导入 pluginManagement 所以, 最简单的方案还是使用 parent 继承, 而不是 scope import |
2
Itach1 2020-08-20 17:29:07 +08:00
spring-boot-dependencies 包含 pluginManagement 来管理 plugin version
|
3
JasonLaw OP @SoloCompany #1 我希望它的 parent 是内部的,而不是 Spring Boot 的,所以采用了<scope>import</scope>这种方式。现在的话,就是自己显示地设置 plugin 的版本。
|
4
JasonLaw OP |
5
SoloCompany 2020-08-20 17:51:49 +08:00
@JasonLaw #3 我已经和你讨论了 import 的缺陷了, 最要命的一点是覆盖不了属性, 同时 plugin management 无法导入也是另一个明显的缺陷, 所以基本上别无选择, 还是用 parent 继承吧
|