# Création et test de Java avec Maven

Découvrez comment créer un flux de travail d’intégration continue (CI) dans GitHub Actions pour générer et tester votre projet Java avec Maven.

## Introduction

Ce guide vous montre comment créer un flux de travail qui effectue une intégration continue (CI) pour votre projet de Java à l’aide de l’outil de gestion de projet logiciel Maven. Le workflow que vous créez vous permet de voir quand les commits de pull request entraînent des échecs de build ou de test dans votre branche par défaut. Cette approche peut vous aider à garantir l’intégrité de votre code. Vous pouvez étendre votre workflow CI pour mettre en cache des fichiers et charger des artefacts à partir d’une exécution de workflow.

Les exécuteurs hébergés dans GitHubont un cache d’outils avec des logiciels préinstallés, incluant des kits de développement Java (JDK) et Maven. Pour obtenir la liste des logiciels et des versions préinstallées de JDK et de Maven, consultez « [Exécuteurs hébergés par GitHub](/fr/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software) ».

## Prérequis

Vous devez être familiarisé avec YAML et la syntaxe GitHub Actions. Pour plus d’informations, consultez l’article suivant :

* [Syntaxe de flux de travail pour GitHub Actions](/fr/actions/using-workflows/workflow-syntax-for-github-actions)
* [Écriture de workflows](/fr/actions/learn-github-actions)

Nous vous recommandons d’avoir une compréhension de base des Java et du framework Maven. Pour plus d’informations, consultez [Maven Getting Started Guide](https://maven.apache.org/guides/getting-started/index.html) dans la documentation Maven.

## Utilisation d’un modèle de workflow Maven

Pour démarrer rapidement, ajoutez un modèle de workflow au répertoire `.github/workflows` de votre référentiel.

GitHub fournit un modèle de flux de travail pour Maven qui doit fonctionner pour la plupart des Java avec des projets Maven. Les sections suivantes de ce guide donnent des exemples de la manière dont vous pouvez personnaliser ce modèle de workflow.

1. Sur GitHub, accédez à la page principale du référentiel.

2. Sous le nom de votre référentiel, cliquez sur **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions**.

   ![Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.](/assets/images/help/repository/actions-tab-global-nav-update.png)

3. Si vous disposez déjà d’un workflow dans votre dépôt, cliquez sur **Nouveau workflow**.

4. La page « Choisir un workflow » présente une sélection de modèles de workflow recommandés. Recherchez « Java avec Maven ».

5. Dans le flux de travail « Java avec Maven », cliquez sur **Configure**.

6. Modifiez le workflow en fonction des besoins. Par exemple, modifiez la version de Java.

7. Cliquez sur **Commiter les changements**.

Le fichier de workflow `maven.yml` est ajouté au répertoire `.github/workflows` de votre dépôt.

### Spécification de la version et de l’architecture de Java

Le modèle de workflow configure le `PATH` pour qu’il contienne OpenJDK 8 pour la plateforme x64. Si vous souhaitez utiliser une autre version de Java ou cibler une architecture différente (`x64` ou `x86`), vous pouvez utiliser l’action `setup-java` pour choisir un autre environnement d’exécution Java.

Par exemple, pour utiliser la version 11 du JDK fourni par Adoptium pour la plateforme x64, vous pouvez utiliser l’action `setup-java` et configurer les paramètres `java-version`, `distribution` et `architecture` sur `'11'`, `'temurin'` et `x64`.

```yaml copy
steps:
  - uses: actions/checkout@v6
  - name: Set up JDK 11 for x64
    uses: actions/setup-java@v4
    with:
      java-version: '11'
      distribution: 'temurin'
      architecture: x64
```

Pour plus d’informations, consultez l’action [`setup-java`](https://github.com/actions/setup-java).

## Génération et test de votre code

Vous pouvez utiliser les mêmes commandes que celles que vous utilisez localement pour générer et tester votre code.

Le modèle de workflow exécutera la cible `package` par défaut. Dans la configuration Maven par défaut, cette commande télécharge les dépendances, génère les classes, exécute les tests et empaquettent les classes dans un format distribuable, par exemple, dans un fichier JAR.

Si vous utilisez différentes commandes pour générer votre projet ou si vous souhaitez utiliser une autre cible, vous pouvez les spécifier. Par exemple, vous pouvez exécuter la cible `verify` qui est configurée dans un fichier `pom-ci.xml`.

```yaml copy
steps:
  - uses: actions/checkout@v6
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - name: Run the Maven verify phase
    run: mvn --batch-mode --update-snapshots verify
```

## Mise en cache des dépendances

Vous pouvez mettre en cache vos dépendances pour accélérer vos exécutions de workflow. Une fois l’exécution réussie, votre dépôt Maven local est stocké dans un cache. Dans les prochaines exécutions de workflows, le cache sera restauré afin que les dépendances n’aient pas besoin d’être téléchargées à partir des dépôts Maven distants. Vous pouvez mettre en cache les dépendances à l’aide de l’[action `setup-java`](https://github.com/marketplace/actions/setup-java-jdk) ou utiliser l’[action `cache`](https://github.com/actions/cache) pour une configuration personnalisée et plus avancée.

```yaml copy
steps:
  - uses: actions/checkout@v6
  - name: Set up JDK 17
    uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
      cache: maven
  - name: Build with Maven
    run: mvn --batch-mode --update-snapshots verify
```

Ce workflow enregistre le contenu de votre dépôt Maven local, qui est situé dans le répertoire `.m2` du répertoire de base de l’exécuteur. La clé du cache sera le contenu haché de `pom.xml`, changez pour `pom.xml` invalidera le cache.

## Empaquetage des données de workflow en tant qu’artefacts

Une fois que votre build a réussi et que vos tests ont réussi, vous pouvez charger les packages de Java résultants en tant qu’artefact de build. Cela stockera les packages générés dans le cadre de l’exécution du workflow et vous permettra de les télécharger. Les artefacts peuvent vous aider à tester et à déboguer les pull requests dans votre environnement local avant la fusion. Pour plus d’informations, consultez « [Stocker et partager des données avec les artefacts de workflow](/fr/actions/using-workflows/storing-workflow-data-as-artifacts) ».

Maven crée généralement des fichiers de sortie comme les fichiers JAR, EAR ou WAR dans le répertoire `target`. Pour charger ces fichiers en tant qu’artefacts, vous pouvez les copier dans un nouveau répertoire qui contient les artefacts à charger. Par exemple, vous pouvez créer un répertoire appelé `staging`. Vous pouvez ensuite charger le contenu de ce répertoire à l’aide de l’action `upload-artifact`.

```yaml copy
steps:
  - uses: actions/checkout@v6
  - uses: actions/setup-java@v4
    with:
      java-version: '17'
      distribution: 'temurin'
  - run: mvn --batch-mode --update-snapshots verify
  - run: mkdir staging && cp target/*.jar staging
  - uses: actions/upload-artifact@v4
    with:
      name: Package
      path: staging
```