Как собрать исполняемый jar-файл micronaut - PullRequest
0 голосов
/ 14 июля 2020

Я создал приложение для микронавтов, используя

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 is не генерирует (-all) jar.

EDITED: Он генерирует только my-app-0.1.jar, и когда я использую этот jar, он выдает ошибку. no main manifest attribute, in build/libs/my-app-0.1.jar Нужно ли мне добавлять какие-то дополнительные строки в файл build.gradle?

Ответы [ 2 ]

2 голосов
/ 16 июля 2020

Как мне сгенерировать 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
0 голосов
/ 14 июля 2020
./gradlew shadowJar

сгенерирует my-app-0.1-all.jar.

ПРИМЕЧАНИЕ. На момент предоставления этого ответа плагин тени, похоже, отсутствует, когда я использую функцию jib при создании проекта. т.е. когда вы используете mn create-app my-app --features jib shadowPlugin отсутствует в файле build.gradle. Если это так: добавьте следующие строки в build.gradle

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

shadowJar {
    mergeServiceFiles()
}
...