无法为参数找到方法bootJar()

时间:2018-04-12 13:48:38

标签: spring-boot

在构建gradle项目时,我遇到错误 - FAILURE:构建因异常而失败。

  • 其中: 构建文件'/Users/vdubey/Documents/microservices/workspace/Promo-Service/build.gradle'行:30

  • 出了什么问题: 评估根项目“促销 - 服务”时出现问题。

      

    在org.gradle.api.Project类型的根项目'Promo-Service'上找不到参数[build_3jq74tz48uic808y18txabjvx $ _run_closure1 @ 5c4aa147]的方法bootJar()。

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。

  • https://help.gradle.org

  • 获取更多帮助

有什么理由失败?

4 个答案:

答案 0 :(得分:5)

我在遵循Spring Boot with Docker指南时遇到此错误,因为我的应用程序使用的是Spring Boot 1.5.10.RELEASE,而bootRun仅在2.0.0中引入。

幸运的是,Spring Boot Docker指南代码位于Github存储库中,因此我能够导航回2.0.0之前的版本:https://github.com/spring-guides/gs-spring-boot-docker/tree/8933f6efa9a94cf596095658dc0b81986d11a3ec

请参阅已完成的build.gradle文件以获取1.5.10-RELEASE:

// This is used as the docker image prefix (org)
group = 'springio'

jar {
    baseName = 'gs-spring-boot-docker'
    version =  '0.1.0'
}

// tag::task[]
docker {
    name "${project.group}/${jar.baseName}"
    files jar.archivePath
    buildArgs(['JAR_FILE': "${jar.archiveName}"])
}
// end::task[]

答案 1 :(得分:2)

考虑检查Spring Boot的gradle插件是否存在: https://plugins.gradle.org/plugin/org.springframework.boot

对于Gradle 2.1和更高版本:

plugins {
  id "org.springframework.boot" version "2.1.0.RELEASE"
}

对于较早的Gradle版本:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE"
  }
}

apply plugin: "org.springframework.boot"

答案 2 :(得分:0)

在构建我下载的存储库时出现此错误。
通过修改build.gradle使其包含spring-boot-gradle-plugin的buildscript依赖项并将org.springframework.boot作为插件应用

,我能够解决同样的问题。
buildscript {
ext {
    springBootVersion = '<Spring boot version>'
}
repositories {
     ...<my repository config>... 

 }
// These are gradle build dependencies and not application requirements
dependencies {
    ...<other dependencies>...
    classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
}
}

apply plugin: 'org.springframework.boot'

答案 3 :(得分:0)

当我关注official Spring testing-web guide时遇到了这个问题。他们提供了如下的初始gradle文件。

buildscript {
    repositories { mavenCentral() }
}

plugins { id "io.spring.dependency-management" version "1.0.4.RELEASE" }

ext { springBootVersion = '2.0.5.RELEASE' }

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

bootJar {
    baseName = 'gs-testing-web'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.6'
}

但是当我运行./gradlew clean命令时,出现以下异常

Could not find method bootJar() for arguments [] on root project '' of type org.gradle.api.Project.

问题是不是使用plugins { id "io.spring.dependency-management" version "1.0.4.RELEASE" },而是使用id "org.springframework.boot" version "2.1.3.RELEASE"。同样不要忘记java和io.spring.dependency-management插件。

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

8.1。对Java插件做出反应

     

将Gradle的java插件应用于项目时,Spring Boot插件:   创建一个名为bootJar的BootJar任务,该任务将创建一个可执行文件,   该项目的胖子。广口瓶将容纳所有东西   主要源集的运行时类路径;类打包在   BOOT-INF / classes和jars打包在BOOT-INF / lib中

     

8.4。对依赖管理插件的反应

     

将io.spring.dependency-management插件应用于   项目,Spring Boot插件将自动导入   spring-boot-depends bom。

我在下面共享了有效的build.gradle文件,对于任何有此问题的人来说,它都是一个起点。

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.6/userguide/tutorial_java_projects.html
 */
plugins {
    id "org.springframework.boot" version "2.1.3.RELEASE"
}

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

ext {
    springBootVersion = '2.1.3.RELEASE'
}
// In this section you declare where to find the dependencies of your project
repositories {
    // You can declare any Maven/Ivy/file repository here.
    mavenCentral()
}

bootJar {
    mainClassName = 'com.softwarelabs.App'
    baseName = 'spring-boot-integration-test'
    version = '0.1.0'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    // This dependency is found on compile classpath of this component and consumers.
    compile 'com.google.guava:guava:23.0'

    testCompile("org.springframework.boot:spring-boot-starter-test")
    // Use JUnit test framework
    testCompile 'junit:junit:4.12'
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.6'
}

有关更多详细信息,请检查spring boot gradle plugin documentation getting started部分。

检查Spring Boot plugin reacts by other plugins的情况。