在父 build.gradle 中找不到 ID 为 spring-boot 的插件

Posted

技术标签:

【中文标题】在父 build.gradle 中找不到 ID 为 spring-boot 的插件【英文标题】:plugin with id spring-boot not found in parent build.gradle 【发布时间】:2016-02-07 06:26:05 【问题描述】:

我有以下项目结构:

java/ 构建.gradle settings.gradle 项目A/ 构建.gradle 项目B/ build.gradle

当我输入以下代码时,例如projectA的build.gradle,

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE")
    


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
...

一切正常。

但是如果我把上面的代码放在Java的build.gradle中:

subprojects 
    buildscript 
        repositories 
            mavenCentral()
        
        dependencies 
            classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE")
        
    

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'spring-boot'
    ...

运行gradle clean build时,一直报如下错误:

未找到 ID 为“spring-boot”的插件。

以前有人遇到过这个问题吗?为什么?

【问题讨论】:

【参考方案1】:

我想出了一个解决方案,但不知道为什么。周末会花一些时间阅读文档...

将多项目 build.gradle 更改为以下内容:

buildscript 
    repositories 
        mavenCentral()
    

    dependencies 
            classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE")
    


subprojects 
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'spring-boot'
    ...

即将构建脚本移出子项目

【讨论】:

它看起来是一个 Gradle 错误。见github.com/gradle/gradle/issues/1668【参考方案2】:

尝试使用完全限定名称,如下所示:

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

【讨论】:

【参考方案3】:

你需要指定一些插件的版本,你只需要。但是 gradle 不想要多个不同的版本,即使您在多个文件中键入相同的版本,如果它们相互包含,它将无法工作。

因此,要解决您必须将通用插件移动到根项目的问题,如果某些项目不使用它也没关系,请进一步阅读。这是技巧部分,您需要将apply false 放入插件的根项目中。由于它不会应用于根项目和其他项目,但它将应用于您将添加插件的所有项目。

所以你会在 root 中输入:

plugins
    id 'org.springframework.boot' version '2.0.3.RELEASE' apply false

但是在子项目中你把它没有版本

plugins 
    id 'org.springframework.boot'

另外不要忘记将include 语句放在根项目中,用于根需要应用到的所有文件夹。

【讨论】:

以上是关于在父 build.gradle 中找不到 ID 为 spring-boot 的插件的主要内容,如果未能解决你的问题,请参考以下文章

在根项目中找不到任务“publishApkRelease”

找不到 com.android.tools.build:gradle:5.1.1

在当前主题中找不到样式“floatingActionButtonStyle”

在 Android Studio 项目中找不到参数的方法 android()

IllegalStateException:在父或祖先上下文类 android.support.v7.widget.AppCompatButton 中找不到方法 insert(View)

在包中找不到属性“layout_behavior”的资源标识符