未找到 ID 为“org.springframework.boot”的插件

Posted

技术标签:

【中文标题】未找到 ID 为“org.springframework.boot”的插件【英文标题】:plugin with id 'org.springframework.boot' not found 【发布时间】:2019-08-04 07:37:24 【问题描述】:

我想使用 gradle 5.2 将 spring boot 插件包含到我的项目中。下面是我的 build.gradle 的当前状态,然后是我尝试做的事情。目前,我正在尝试使用 gradle 5 的 BOM support,但这不是硬性要求。我只想知道如何解决这个错误

未找到 ID 为“org.springframework/boot”的插件

更新:更新了下面的结构以更好地代表我的用例。

build.gradle

apply from: 'boot.gradle'

boot.gradle

repositories 
    mavenCentral()


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

dependencies 
    implementation platform('org.springframework.boot:spring-boot-dependencies:2.0.0.RELEASE')

    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.0.RELEASE'
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.0.0.RELEASE'

    implementation group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: '2.0.0.RELEASE'

要重现我的错误,您只需要在项目中添加一个文件:

Application.java

@SpringBootApplication
public class Application 

    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

我已尝试实施找到的解决方案here,它基于

在外部脚本(我们称之为脚本插件)中,插件 ID 不能 使用。相反,必须使用完全限定的类名。这 是一个已知的错误。

和 here 对我不起作用,即使我升级到使用 spring 2.0.5。

以及其他各种类似的解决方案。

【问题讨论】:

org.springframework/boot 是错字还是错误真的有斜线?任何类型的网络代理可能会阻止来自 Maven 的下载或工件? @Mike 修正了错字,谢谢。我将 maven 用于其他项目的许多工件,所以这应该不是问题。 它是基本的 Spring Boot 应用程序吗?或尝试将现有应用程序转换为 spring-boot? @buratino @Deadpool 从一开始就是一个spring-boot应用。 然后经过一些更改它坏了?实际上问题对我来说并不清楚@buratino 【参考方案1】:

您可以尝试使用 spring BOM 依赖管理,如下所示:

plugins 
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'


apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories 
    mavenCentral()


dependencies 
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

【讨论】:

【参考方案2】:

我的用例的这个解决方案基于 Abdelghani 的回答。

build.gradle

plugins 
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'


apply from: 'boot.gradle'

boot.gradle

repositories 
    mavenCentral()


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

dependencies 
    implementation platform('org.springframework.boot:spring-boot-dependencies:2.0.0.RELEASE')

    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.0.0.RELEASE'
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: '2.0.0.RELEASE'

    implementation group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: '2.0.0.RELEASE'

简而言之,构建脚本需要有 'org.springframework.boot' 作为插件,apply plugin: 'org.springframework.boot' 才能在其他地方工作。

【讨论】:

以上是关于未找到 ID 为“org.springframework.boot”的插件的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloudAlibaba项目报错java.lang.IllegalArgumentException: Could not find class [org.springframew解决方案

未找到 ID 为“gwt”的插件

无法找到 Spring NamespaceHandler 错误

未找到 ID 为“org.sonarqube”的插件

未找到 ID 为“org.springframework.boot”的插件

错误:(2, 0) 未找到 ID 为“jetty”的插件