首页 > 解决方案 > 如何在离线环境中使用 gradle 为 Spring Boot 创建可执行 Jar

问题描述

我想在离线环境中使用 gradle 为 Spring Boot 创建一个可执行的 Jar。有一个错误。请告诉我解决方案。

■命令

C:/~/~/demo gradlew bootJar --offline --stacktrace

FAILURE: Build failed with an excetion.

What went wrong:
Task 'bootJar' not found in root project 'demo'.

Exception is:
org.gradle.execution. TaskSelectionException: Task 'bootJar' not found in root project 'demo'.

……

■build.gradle

plugins {
//  id 'org.springframework.boot' version '2.4.2'
//  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

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'
}

test {
    useJUnitPlatform()
}

■gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=gradle-6.6.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

■版本

SpringBoot:2.4.2
gradle:6.6.1

标签: javagradle

解决方案


bootJar任务来自 Spring Boot Gradle 插件 ( org.springframework.boot)。您已经从项目中删除了插件,因此bootJar永远不会创建任务。

Gradle 足够聪明,可以缓存构建的各个部分,包括依赖项和插件。但是,由于您收到该错误,因此 Spring Boot 插件未缓存,因此您必须暂时在线才能下载和缓存插件。

如果你暂时不能上线,那么bootJar具体的任务,你必须在你的项目中重新实现自己:https ://github.com/spring-projects/spring-boot/blob/2.4.x/spring-boot -project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootJar.java


推荐阅读