如何使用 Spring Boot 来管理 Maven plugin 的版本?

2020-08-20 16:21:07 +08:00
 JasonLaw

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 的版本”呢?

2847 次点击
所在节点    编程
5 条回复
SoloCompany
2020-08-20 17:27:14 +08:00
应该不可以

首先, 一个无关的事情, 使用 <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
Itach1
2020-08-20 17:29:07 +08:00
spring-boot-dependencies 包含 pluginManagement 来管理 plugin version
JasonLaw
2020-08-20 17:47:33 +08:00
@SoloCompany #1 我希望它的 parent 是内部的,而不是 Spring Boot 的,所以采用了<scope>import</scope>这种方式。现在的话,就是自己显示地设置 plugin 的版本。
JasonLaw
2020-08-20 17:51:27 +08:00
SoloCompany
2020-08-20 17:51:49 +08:00
@JasonLaw #3 我已经和你讨论了 import 的缺陷了, 最要命的一点是覆盖不了属性, 同时 plugin management 无法导入也是另一个明显的缺陷, 所以基本上别无选择, 还是用 parent 继承吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/699987

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX