首页 > 解决方案 > Spring Boot Gradle 不生成包装器并且不生成可运行的 jar

问题描述

我正在尝试使用多阶段 dockerfile 创建一个 Spring Boot 应用程序,该应用程序将在 Docker 中完全编译和运行:

###############
#### Build ####
###############
FROM openjdk:13-alpine as builder

WORKDIR /usr/src/app
COPY  . .
RUN path/to/gradlew build

################
#### Deploy ####
################
FROM openjdk:13-alpine
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app/some/path /usr/src/app/

EXPOSE 8080
CMD [java, some/path/someJar.jar]

我不能直截了当的两件事:

  1. 我的项目中的任何地方都没有 gradlew 文件和 gradlew.bat 文件。即使有一个 gradle/ 目录并且在 gradle/wrapper/gradle-wrapper.properties 我定义了 Gradle 版本 3.5.1。在设置中,我尝试了“默认包装器”和“包装器任务配置”。

在此处输入图像描述

Intellij Idea 似乎以某种方式解决了 gradle 可执行文件。不知道可执行文件在哪里。

  1. 构建时 gradle 会生成一些输出。但是我无法手动运行或转换为不错的 docker 命令。它基本上编译了java类,就是这样。在java中运行主类不起作用。再一次,使用 Intellij Idea 'run' 工作正常。Intellij 是做什么的?

标签: javaspring-bootgradleintellij-idea

解决方案


为了创建包装文件,您需要先以其他方式安装 Gradle。检查安装文档。之后,您需要在项目的根文件夹中运行命令:

gradle wrapper

这将生成所需wrapperwrapper.bat文件。然后您可以使用这些脚本从您的 Dockerfile 运行。可以在此处找到有关使用 wrapper 的更多详细信息。

生成包装文件后,您可以通过转到Settings -> Build, Execution, Deployment -> Gradle并应用Use default gradle wrapper (recommended)单选按钮来配置 Intellij。然后 IDEA 将使用它。


推荐阅读