Dernière modification : Dec 08 , 2024
Dernière modification : Dec 08 , 2024

Étapes suggérées

Installation des packages pour Linux

dnf (rpm-based)

sudo dnf install gcc glibc-devel zlib-devel libstdc++-static

Debian-based distributions

sudo apt-get install build-essential libz-dev zlib1g-dev

Cloner le dépôt GIT

git clone https://github.com/quarkusio/quarkus-quickstarts.git

Se positionner dans le répertoire getting-started

cd getting-started

Produire un exécutable natif

L'exécutable natif de notre application contiendra le code de l'application, les bibliothèques requises, les API Java et une version réduite d'une machine virtuelle. La base de machines virtuelles plus petite améliore le temps de démarrage de l'application et produit une empreinte disque minimale.

Création d'un exécutable natif

Fonctionnement de la compilation native

Vérifier la présence des instructions de compilation

Ouvrez le fichier pom.xmlet vérifiez la présence des lignes suivantes :

<profiles>
    <profile>
        <id>native</id>
        <activation>
            <property>
                <name>native</name>
            </property>
        </activation>
        <properties>
            <skipITs>false</skipITs>
            <quarkus.package.type>native</quarkus.package.type>
        </properties>
    </profile>
</profiles>

Vous pouvez fournir des options personnalisées pour la commande native-image en utilisant le quarks.native.additional-build-args. Plusieurs options peuvent être séparées par une virgule.

Une autre possibilité est d'inclure le quarkus.native.additional-build-args dans votre application.propriétés.

Vous pouvez trouver plus d'informations sur la configuration du processus de création d'image native plus loin dans l'exercice.

Nous utilisons un profil car, vous le verrez très bientôt, empaqueter l'exécutable natif prend quelques minutes. Tu pourrais juste passer -Dquarkus.package.type=native en tant que propriété sur la ligne de commande, mais il est préférable d'utiliser un profil car cela permet également d'exécuter des tests d'image natifs.

Construire l'exécutable natif

Créer un exécutable natif à l'aide de la CLI Quarkus

quarkus build --native

En utilisant Maven :

./mvnw install -Dnative

Vous devriez voir les lignes suivantes à un moment :

[INFO] [io.quarkus.deployment.pkg.steps.JarResultBuildStep] Building native image source jar: /home/sleroy/quarkus-quickstarts/getting-started/target/getting-started-1.0.0-SNAPSHOT-native-image-source-jar/getting-started-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildStep] Building native image from /home/sleroy/quarkus-quickstarts/getting-started/target/getting-started-1.0.0-SNAPSHOT-native-image-source-jar/getting-started-1.0.0-SNAPSHOT-runner.jar
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner] Using docker to run the native image builder
[INFO] [io.quarkus.deployment.pkg.steps.NativeImageBuildContainerRunner] Pulling builder image 'quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21'

Compilation d'un binaire statique

Il faut rajouter le paramètre suivant pour construire sous linux un binaire statique :

-Dquarkus.native.additional-build-args="--static","--libc=musl".

Vérification du binaire

Produire un exécutable natif peut entraîner quelques problèmes, et c'est donc aussi une bonne idée d'exécuter des tests sur l'application exécutée dans le fichier natif.

Pour voir la ressource GreetingResource qu'ELLE s'exécute par rapport à l'exécutable natif, utilisez ./mvnw verify -Dnative.

Contenu original

  • https://quarkus.io/guides/building-native-image