[JAVA] Utilisez jlink avec gradle

introduction

Si vous utilisez jlink, vous pouvez créer un JRE dédié à l'application, ce qui est pratique pour la distribution. J'ai donc essayé de savoir comment l'utiliser avec gradle.

Préparation du projet

Pour le moment, normalement

gradle init --type=java-application

Fait avec.

Réécrire build.gradle

La condition minimale est d'ajouter la ligne suivante à l'élément plugins.

id 'org.beryx.jlink' version '2.22.0'

Vous pouvez maintenant utiliser gradle jlink.

De plus, si vous supprimez les dépendances incluses par défaut, l'avertissement disparaît. (Il semble que le nom du module se terminant par un nombre ne soit pas autorisé)

De plus, selon la version de JDK

The module name specified in 'application.mainModule' (null) has not the expected value

Est affiché. Ceci est dans l'élément d'application

mainModule = 'nom du module'

Il disparaît si vous écrivez. (Le nom du module est spécifié dans module-info.java)

Il est également possible de créer un élément jlink et de définir une option. Par exemple, vous pouvez écrire comme suit.

jlink {
    options = ['--compress', '2', '--no-header-files', '--no-man-pages']
}

Vous pouvez également créer des applications pour plusieurs plates-formes avec targetPlatform. Dans ce cas, préparez un JDK pour chaque plate-forme.

jlink {
    targetPlatform("mac") {
        jdkHome = "/usr/java/jdk-mac/Contents/Home"
    }
    targetPlatform("linux-x64") {
        jdkHome = "/usr/java/jdk"
    }
    targetPlatform("windows-x64") {
        jdkHome = "/usr/java/jdk-win"
    }
    options = ['--compress', '2', '--no-header-files', '--no-man-pages']
}

Construire

gradle build

Vous pouvez maintenant créer un pot sans utiliser jlink. Lors du jlinking, procédez comme suit.

gradle jlink

Maintenant, vous avez une image sous le répertoire de construction, et le répertoire en dessous est votre application. Si targetPlatform est spécifié, un répertoire de \ <nom de projet > - \ <nom de plate-forme cible > sera créé et placé en dessous.

Pour exécuter l'application, il existe un script d'exécution pour \ <nom du projet > dans le répertoire bin afin que vous puissiez l'exécuter. (Fichier Bat pour Windows)

Vous pouvez distribuer l'application en distribuant ensemble les répertoires bin, conf, legal et lib. Vous pouvez le démarrer en le copiant tel quel et en exécutant le fichier exécutable bin.

Recommended Posts

Utilisez jlink avec gradle
Utiliser ProGuard avec Gradle
Utiliser les WebJars avec Gradle
Utilisez log4j2 avec YAML + Gradle
Test d'intégration avec Gradle
Utiliser Puphpeteer avec Docker
Installez Gradle sur ubuntu16.04
Data Nucleus commençant par Gradle
Comment utiliser Gradle
Commencez avec Gradle
Utiliser des couches Lambda avec Java
Créer un multi-projet Java avec Gradle
Utiliser GDAL avec Python avec Docker
Pot Gradle + Kotlin-Generate avec DSL
Utiliser le certificat pfx avec Okhttp3
Lombok ne fonctionne pas avec Gradle5
Utilisez plusieurs bases de données avec Rails 6.0
Utiliser Spring JDBC avec Spring Boot
Utilisez Ruby avec Google Colab
Utiliser SpatiaLite avec Java / JDBC
Hello World avec SpringBoot / Gradle
[Docker] À utiliser à tout moment avec Docker + Rails
Utiliser PlantUML avec Visual Studio Code
Utiliser l'authentification de base avec Spring Boot
Construire un projet Java avec Gradle
Utiliser java avec MSYS et Cygwin
Utiliser le constructeur avec des arguments dans cucumber-picocontainer
Gradle
Utiliser le type inet PostgreSQL avec DbUnit
J'ai essayé d'utiliser JOOQ avec Gradle
Utilisez bootstrap 4 avec PlayFramework 2.6 (pas de CDN)
Couverture de test de sortie avec Clover + Gradle
Je ne peux pas installer lombok avec Gradle.
Utiliser Git avec SourceTree et Eclipse
Utilisez JDBC avec Java et Scala.
Utiliser Java 11 avec Google Cloud Functions
Comment utiliser mssql-tools avec Alpine
À partir de Spring Boot 0. Utilisez Spring CLI
Utilisation de cuda11.0 avec pytorch en utilisant Docker
Développer le traitement avec IntelliJ + Kotlin + Gradle
[Java] Créer un module exécutable avec Gradle
Utilisez Firebase Realtime Database avec Cocos Creator.
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Utiliser le lien symbolique avec la construction en plusieurs étapes de Docker
Utilisez FacesContext comme maquette avec PowerMockito
[JaCoCo (Java Code Coverage)] Utilisation avec NetBeans
Utiliser cljstyle avec Spacemacs sur Ubuntu sur WSL2
Utiliser les balises JSP Spring Security avec FreeMarker
Configurer un multi-projet avec des sous-répertoires dans Gradle
Le test JUnit 5 Gradle génère une erreur avec l'annotation Lombok
Utiliser le format nommé avec la méthode de format de Ruby
Présentation du test Java automatisé avec JUnit 5 + Gradle
Téléchargez JDK avec Gradle et créez JRE
Ajouter un script à la distribution créée par gradle
(IntelliJ + gradle) Hello World avec Spring Boot