Gradle 如何构建可执行的micronaut jar

Gradle 如何构建可执行的micronaut jar,gradle,build.gradle,micronaut,Gradle,Build.gradle,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",

我已经使用

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时,它给出了一个错误。
没有主清单属性,在build/libs/my-app-0.1.jar中

是否需要在build.gradle文件中添加任何其他行

./gradlew shadowJar
将生成
my-app-0.1-all.jar

注意:在提供这个答案时,当我在生成项目时使用jib特性时,影子插件似乎丢失了。 i、 当你使用
mn创建应用程序我的应用程序--功能jib
shadowPlugin不在
build.gradle
文件中。 如果是这种情况:在build.gradle中添加以下行

plugins {
    ...
    id "com.github.johnrengelman.shadow" version "6.0.0"
}

shadowJar {
    mergeServiceFiles()
}
如何生成my app-*-all.jar

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

~ $ 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

使用CLI提供的模板,
/gradlew assembly
应该构建jar,来自shadowJar的任务将构建
*-all.jar
。运行
/gradlew assembly
时是否有任何错误?(特别是因为您的项目名称中的
新的
保留关键字?@Airy我没有收到任何错误
/gradlew jar
/gradlew assembly
都在生成jar。但是当我在Dockerfile或local中使用jar文件时。我在build/libs/my-app-0.1.ja中得到了错误
无主清单属性。)r
发现有人已经问了类似的问题。“我是否需要在build.gradle文件中添加其他行?”-如果不知道您的
build.gradle
@JeffScottBrown
build.gradle
是由micronaut cli自动生成的。我相信,对于运行
mn create app my app
的任何人来说,生成的文件都是一样的。我现在很好,因为
/gradlew shadowJar
发挥了神奇的作用。“当您使用mn create app my app--功能jib shadowPlugin时,build.gradle中不存在"-这与原始问题中提出的情况不同。原始问题明确表示,
mn create app my app
@JeffScottBrown如果混淆,请道歉。答案仅针对原始问题。我只是陈述一个事实,我希望未来的读者了解。
mn create app my app
有阴影build.gradle中的plugin和命令
mn create app my app--features jib
在build.gradle中没有影子插件。我将尝试编辑答案并将其作为注释。很高兴您找到了答案。祝您一切顺利!注意:
/gradlew assembly
在使用jib功能时不会生成
*All.jar
设置项目。例如,当您使用
mn创建应用程序我的应用程序--功能jib