maven 插件的 kotlin-bom

kotlin-bom for maven plugin

我正在尝试使用 kotlin-bom 为我的单模块 maven 项目中的所有内容保持一致的版本。我的 pom.xml:

里有这个
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-bom</artifactId>
            <version>1.6.20</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

现在我不需要在任何相关依赖项中指定 Kotlin 版本:

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-reflect</artifactId>
    </dependency>
    ...more dependencies...
</dependencies>

然而,不幸的是,我仍然必须为我的插件及其依赖项指定 Kotlin 版本:

<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>1.6.20</version>
            <configuration>
                <compilerPlugins>
                    <plugin>kotlinx-serialization</plugin>
                </compilerPlugins>
                <jvmTarget>17</jvmTarget>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-serialization</artifactId>
                    <version>1.6.20</version>
                </dependency>
            </dependencies>
        </plugin>

有没有办法让 kotlin-bom 也适用于插件?

目前无法通过 BOM 管理插件版本,请参阅 this answer

如果有帮助,您可以为 kotlin 版本定义一个 属性

<properties>
    <kotlin.version>1.6.20</kotlin.version>
</properties>

并使用这个 属性 作为 bom 版本和插件(及其依赖项)版本,这样你至少在任何地方都拥有相同的版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-bom</artifactId>
            <version>${kotlin.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <plugins>
        <plugin>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-maven-plugin</artifactId>
            <version>${kotlin.version}</version>
            <configuration>
                <compilerPlugins>
                    <plugin>kotlinx-serialization</plugin>
                </compilerPlugins>
                <jvmTarget>17</jvmTarget>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-serialization</artifactId>
                    <version>${kotlin.version}</version>
                </dependency>
            </dependencies>
        </plugin>