找不到参数的方法 bootJar()
Posted
技术标签:
【中文标题】找不到参数的方法 bootJar()【英文标题】:Could not find method bootJar() for arguments 【发布时间】:2018-04-12 13:48:38 【问题描述】:在构建 gradle 项目时,我遇到了错误- FAILURE:构建失败并出现异常。
在哪里: 构建文件 '/Users/vdubey/Documents/microservices/workspace/Promo-Service/build.gradle' 行:30
出了什么问题: 评估根项目“Promo-Service”时出现问题。
在 org.gradle.api.Project 类型的根项目“Promo-Service”上找不到参数 [build_3jq74tz48uic808y18txabjvx$_run_closure1@5c4aa147] 的方法 bootJar()。
尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。
通过https://help.gradle.org获得更多帮助
有什么线索会失败吗?
【问题讨论】:
发布 gradle 文件的第 30 行附近的部分,以及您尝试运行的 gradle 命令。 我正在使用 bootJar baseName = 'promo-service' version = '0.0.1' 试图将我的 gradle 转换为 jar 。我将其删除并已放入其他位置但仍然没有工作吗? 你找到问题了吗?我正在关注 spring boot Docker 指南并遇到了同样的错误 【参考方案1】:我在遵循 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[]
【讨论】:
【参考方案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"
【讨论】:
【参考方案3】:我在关注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.
问题在于使用id "org.springframework.boot" version "2.1.3.RELEASE"
而不是使用plugins id "io.spring.dependency-management" version "1.0.4.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-dependencies 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如何。
【讨论】:
【参考方案4】:我在构建已下载的存储库时遇到此错误。
我可以通过修改我的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'
【讨论】:
以上是关于找不到参数的方法 bootJar()的主要内容,如果未能解决你的问题,请参考以下文章
Gradle build:找不到参数的方法signingConfig()
找不到参数的方法 create() - Crashlytics 问题
找不到与Java版本匹配的alpn-boot JAR:12.0.2