升级到 gradle 6.6.1也是 gradle 5时,bootRepackage 分类器不起作用

问题描述

我们的项目在 gradle 4.10.2(Spring boot 1.5.22)中仍然运行良好,但是当我将 gradle 升级到 6.6.1 时它抛出了异常

org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':my-app'.
Caused by: org.gradle.internal.event.ListenerNotificationException: Failed to notify project evaluation listener
Caused by: java.lang.NoSuchMethodError: org.gradle.api.tasks.TaskInputs.file(Ljava/lang/Object;)Lorg/gradle/api/tasks/TaskInputs;
at org.springframework.boot.gradle.repackage.RepackagePluginFeatures$RegisterInputsOutputsAction.setupInputOutputs(RepackagePluginFeatures.java:150)
at org.springframework.boot.gradle.repackage.RepackagePluginFeatures$RegisterInputsOutputsAction.execute(RepackagePluginFeatures.java:136)

我已经尝试过使用 gradle 5 它仍然发生了。

这是我的 gradle.build bootRepackage 部分,当我删除分类器 = "boot" 时,它可以在没有分类功能的情况下工作

bootRepackage {
    enabled = true
    classifier = "boot"
    doLast{
        //some tasks
    }
}

为什么会这样?

解决方法

Gradle 5 删除了 Spring Boot 1.5 的 Gradle 插件所需的方法。 Spring Boot 1.5 supports Gradle 2.x or 3.x 因此它不适用于 Gradle 5 也就不足为奇了。

如果您想使用更新版本的 Gradle,您还必须升级到更新版本的 Spring Boot。在撰写本文时,2.3.x 是仍受支持的最老一代 Spring Boot。