如何构建可执行的 micronaut jar

How to build executable micronaut jar

我使用

创建了一个 micronaut 应用程序
mn create-app my-app

它使用 Dockerfile 生成了项目结构。 docker 文件正在查找要复制的文件 my-app-*-all.jar

FROM openjdk:14-alpine
COPY build/libs/my-app-*-all.jar my-app.jar
EXPOSE 8080
CMD ["java", "-Dcom.sun.management.jmxremote", "-Xmx128m", "-jar", "my-app.jar"]

如何生成 my-app-*-all.jar?

./gradlew jar 没有生成(-all)jar。

编辑: 它只生成 my-app-0.1.jar,当我使用那个 jar 时,它给出了一个错误。 no main manifest attribute, in build/libs/my-app-0.1.jar 我需要在 build.gradle 文件中添加任何额外的行吗?

./gradlew shadowJar

将生成 my-app-0.1-all.jar.

注意:在提供此答案时,当我在生成项目时使用 jib 功能时,影子插件似乎丢失了。 即当你使用 mn create-app my-app --features jib build.gradle 文件中不存在 shadowPlugin。 如果是这种情况:在 build.gradle

中添加以下行
plugins {
    ...
    id "com.github.johnrengelman.shadow" version "6.0.0"
}

shadowJar {
    mergeServiceFiles()
}

How do I generate the my-app-*-all.jar?

如果您使用默认的 Gradle 构建配置,assemble 将执行此操作。

~ $ mn --version
Micronaut Version: 2.0.0
JVM Version: 1.8.0_252
~ $ 
~ $ mn create-app my-app
| Application created at /Users/jeffscottbrown/my-app
~ $ 
~ $ cd my-app
my-app $ 
my-app $ ./gradlew assemble

BUILD SUCCESSFUL in 2s
10 actionable tasks: 10 executed
my-app $ 
my-app $ ls -l build/libs 
total 27160
-rw-r--r--  1 jeffscottbrown  staff  13473553 Jul 16 10:23 my-app-0.1-all.jar
-rw-r--r--  1 jeffscottbrown  staff      1457 Jul 16 10:23 my-app-0.1.jar