无法将插件 DSL 与 buildscript 块结合使用

Posted

技术标签:

【中文标题】无法将插件 DSL 与 buildscript 块结合使用【英文标题】:Unable to combine plugins DSL with the buildscript block 【发布时间】:2016-04-29 13:15:44 【问题描述】:

我对 Spring Boot 和 Gradle 都很陌生。在尝试简化我的 build.gradle 脚本时,我遇到了以下问题。由于我使用的是 Gradle 2.5,因此我决定利用 Gradle 的新插件 DSL。不幸的是,我需要使用的插件之一,spring-boot-gradle-plugin,并未包含在 Gradle 插件门户中。为了解决这个问题,我对该插件使用了旧的buildscript ...apply plugin: 语法,并在新的plugins ... 语法中指定了我的其余插件。结果是以下构建脚本:

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


plugins 
    id "io.spring.dependency-management" version "0.5.4.RELEASE"
    id "java"
    id "idea"


apply plugin: 'spring-boot'

repositories 
    mavenCentral()


dependencyManagement 
    imports 
        mavenBom 'com.vaadin:vaadin-bom:7.6.1'
    


dependencies 
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-starter-actuator")
    compile("com.vaadin:vaadin-spring-boot-starter")
    compile("com.h2database:h2")
    testCompile("junit:junit")


jar 
    baseName = 'my-spring-boot-app'
    version =  '0.1.0'


sourceCompatibility = 1.8
targetCompatibility = 1.8

task wrapper(type: Wrapper) 
    gradleVersion = '2.3'

但是,此构建脚本不起作用。在运行gradle build 时,我收到错误Plugin with id 'spring-boot' not found. 这是尝试结合使用这两种语法的结果,还是我只是在做一些傻事?

【问题讨论】:

【参考方案1】:

我很傻。第 6 行出现语法错误。classpath 之后不应有冒号。

【讨论】:

以上是关于无法将插件 DSL 与 buildscript 块结合使用的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins作业DSL参数被配置块覆盖

使用Fabric插件为具有groovy插件DSL的Crashlytics建立版本

Gradle 中 buildscript 块的用途

插件本身不能添加 buildscript 依赖然后应用 dokka-android 插件

Gradle中的buildScript代码块

在Gradle脚本中使用第三方依赖