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
@JeffScottBrownbuild.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