Skip to main content

Génération et test de code Java avec Maven

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

Introduction

Ce guide explique comment crĂ©er un workflow qui effectue une intĂ©gration continue (CI) pour votre projet Java Ă  l’aide de l’outil de gestion de projet logiciel Maven. Le workflow que vous crĂ©ez vous permet de voir Ă  quel moment les commits de demande de tirage (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 GitHub ont un cache d’outils oĂč sont prĂ©installĂ©s des logiciels, notamment les Java Development Kits (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 Â».

Prérequis

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

Il est recommandĂ© d’avoir une comprĂ©hension de base de Java et du framework Maven. Pour plus d’informations, consultez Maven Getting Started Guide 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 workflow pour Maven qui devrait fonctionner pour la plupart des projets Java avec 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 dépÎt, cliquez sur Actions.

    Capture d’écran des onglets du rĂ©fĂ©rentiel « github/docs Â». L’onglet « Actions Â» est mis en surbrillance avec un encadrĂ© orange.

  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 Configurer.

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

  7. Cliquez sur Valider les changements.

Le fichier de workflow maven.yml est ajoutĂ© Ă  l’annuaire .github/workflows de votre rĂ©fĂ©rentiel.

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
steps:
  - uses: actions/checkout@v4
  - 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.

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 le verify qui est configuré dans un pom-ci.xml fichier.

YAML
steps:
  - uses: actions/checkout@v4
  - 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 ou utiliser l’action cache pour une configuration personnalisĂ©e et plus avancĂ©e.

YAML
steps:
  - uses: actions/checkout@v4
  - 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 Ă©tĂ© gĂ©nĂ©rĂ©e et que vos tests ont rĂ©ussi, vous pouvez charger les packages Java rĂ©sultants en tant qu’artefacts 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 des demandes de tirage dans votre environnement local avant qu’elles ne soient fusionnĂ©es. Pour plus d’informations, consultez « Stocker et partager des donnĂ©es avec les artefacts de workflow Â».

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
steps:
  - uses: actions/checkout@v4
  - 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