Maven@4 - Tâche Maven v4

Générez, testez et déployez avec Apache Maven.

Syntaxe

# Maven v4
# Build, test, and deploy with Apache Maven.
- task: Maven@4
  inputs:
    mavenPOMFile: 'pom.xml' # string. Required. Maven POM file. Default: pom.xml.
    #goals: 'package' # string. Goal(s). Default: package.
    #options: # string. Options. 
  # JUnit Test Results
    #publishJUnitResults: true # boolean. Publish to Azure Pipelines. Default: true.
    testResultsFiles: '**/surefire-reports/TEST-*.xml' # string. Required when publishJUnitResults = true. Test results files. Default: **/surefire-reports/TEST-*.xml.
    #testRunTitle: # string. Optional. Use when publishJUnitResults = true. Test run title. 
    #allowBrokenSymlinks: true # boolean. Alias: allowBrokenSymbolicLinks. Optional. Use when publishJUnitResults = true. Allow broken symbolic links. Default: true.
  # Code Coverage
    #codeCoverageToolOption: 'None' # 'None' | 'Cobertura' | 'JaCoCo'. Alias: codeCoverageTool. Code coverage tool. Default: None.
    #codeCoverageClassFilter: # string. Alias: classFilter. Optional. Use when codeCoverageTool != None. Class inclusion/exclusion filters. 
    #codeCoverageClassFilesDirectories: # string. Alias: classFilesDirectories. Optional. Use when codeCoverageTool = JaCoCo. Class files directories. 
    #codeCoverageSourceDirectories: # string. Alias: srcDirectories. Optional. Use when codeCoverageTool = JaCoCo. Source files directories. 
    #codeCoverageFailIfEmpty: false # boolean. Alias: failIfCoverageEmpty. Optional. Use when codeCoverageTool != None. Fail when code coverage results are missing. Default: false.
    #codeCoverageRestoreOriginalPomXml: false # boolean. Alias: restoreOriginalPomXml. Optional. Use when codeCoverageTool != None. Restore original pom.xml after task execution. Default: false.
  # Advanced
    javaHomeOption: 'JDKVersion' # 'JDKVersion' | 'Path'. Alias: javaHomeSelection. Required. Set JAVA_HOME by. Default: JDKVersion.
    #jdkVersionOption: 'default' # 'default' | '1.17' | '1.11' | '1.10' | '1.9' | '1.8' | '1.7' | '1.6'. Alias: jdkVersion. Optional. Use when javaHomeSelection = JDKVersion. JDK version. Default: default.
    #jdkDirectory: # string. Alias: jdkUserInputPath. Required when javaHomeSelection = Path. JDK path. 
    #jdkArchitectureOption: 'x64' # 'x86' | 'x64'. Alias: jdkArchitecture. Optional. Use when jdkVersion != default. JDK architecture. Default: x64.
    mavenVersionOption: 'Default' # 'Default' | 'Path'. Alias: mavenVersionSelection. Required. Maven version. Default: Default.
    #mavenDirectory: # string. Alias: mavenPath. Required when mavenVersionSelection = Path. Maven path. 
    #mavenSetM2Home: false # boolean. Optional. Use when mavenVersionSelection = Path. Set M2_HOME variable. Default: false.
    #mavenOptions: '-Xmx1024m' # string. Alias: mavenOpts. Set MAVEN_OPTS to. Default: -Xmx1024m.
    #mavenAuthenticateFeed: false # boolean. Alias: mavenFeedAuthenticate. Authenticate with Artifacts feeds. Default: false.
    #effectivePomSkip: false # boolean. Alias: skipEffectivePom. Skip generating effective POM while authenticating with Artifacts feeds. Default: false.
  # Code Analysis
    #sonarQubeRunAnalysis: false # boolean. Alias: sqAnalysisEnabled. Run SonarQube or SonarCloud analysis. Default: false.
    #isJacocoCoverageReportXML: false # boolean. Optional. Use when sqAnalysisEnabled = true && codeCoverageTool = JaCoCo. Use XML Jacoco reports for SonarQube analysis. Default: false.
    #sqMavenPluginVersionChoice: 'latest' # 'latest' | 'pom'. Required when sqAnalysisEnabled = true. SonarQube scanner for Maven version. Default: latest.
    #checkStyleRunAnalysis: false # boolean. Alias: checkstyleAnalysisEnabled. Run Checkstyle. Default: false.
    #pmdRunAnalysis: false # boolean. Alias: pmdAnalysisEnabled. Run PMD. Default: false.
    #findBugsRunAnalysis: false # boolean. Alias: findbugsAnalysisEnabled. Run FindBugs. Default: false.
    #spotBugsRunAnalysis: false # boolean. Alias: spotBugsAnalysisEnabled. Run SpotBugs analysis. Default: false.
    #spotBugsVersion: '4.5.3.0' # string. Alias: spotBugsMavenPluginVersion. Optional. Use when spotBugsAnalysisEnabled = true. Version number. Default: 4.5.3.0.
    #spotBugsGoal: 'spotbugs' # 'spotbugs' | 'check'. Optional. Use when spotBugsAnalysisEnabled = true. The goal for the spotbugs plugin. Default: spotbugs.
    #failWhenBugsFound: true # boolean. Alias: spotBugsFailWhenBugsFound | sbFailWhenBugsFound. Optional. Use when spotBugsAnalysisEnabled = true && spotBugsGoal = check. Fail when bugs are found with spotbugs:check. Default: true.

Entrées

mavenPOMFile - Fichier POM Maven
string. Obligatoire. Valeur par défaut : pom.xml.

Spécifie le chemin d’accès relatif de la racine du dépôt au fichier POM Maven. Pour plus d’informations, consultez Présentation du POM .


goals - Objectif(s)
string. Valeur par défaut : package.

(Facultatif) Définissez sur package pour compiler votre code et l’empaqueter dans un fichier .war. Si vous laissez cet argument vide, la build échoue. Pour plus d’informations, consultez Présentation du cycle de vie des builds Maven .


options - Options
string.

(Facultatif) Spécifie les options de ligne de commande Maven que vous souhaitez utiliser.


publishJUnitResults - Publier sur Azure Pipelines
boolean. Valeur par défaut : true.

Spécifie l’option permettant de publier les résultats du test JUnit générés par la build Maven sur Azure Pipelines. Chaque correspondance Test Results Files de fichier de résultats de test sera publiée en tant que série de tests dans Azure Pipelines.


testResultsFiles - Fichiers de résultats de test
string. Nécessaire lorsque publishJUnitResults = true. Valeur par défaut : **/surefire-reports/TEST-*.xml.

Spécifie le chemin d’accès et le modèle des fichiers de résultats de test à publier.
Des caractères génériques peuvent être utilisés.
Plus d’informations sur les modèles de correspondance de fichiers.
Par exemple, **/TEST-*.xml pour tous les fichiers XML dont le nom commence par TEST-. Si aucun chemin d’accès racine n’est spécifié, les fichiers sont mis en correspondance sous le répertoire de travail par défaut, dont la valeur est disponible dans la variable $(System.DefaultWorkingDirectory). Par exemple, une valeur de **/TEST-*.xml génère en fait des fichiers correspondants à partir de $(System.DefaultWorkingDirectory)/**/TEST-*.xml.


testRunTitle - Titre de la série de tests
string. facultatif. Utilisez quand publishJUnitResults = true.

Spécifie un nom pour la série de tests.


allowBrokenSymlinks - Autoriser les liens symboliques rompus
Alias d’entrée : allowBrokenSymbolicLinks. boolean. facultatif. Utilisez quand publishJUnitResults = true. Valeur par défaut : true.

Si la valeur est définie falsesur , la build échoue lorsque la tâche trouve un lien symbolique rompu lors de la publication du résultat des tests.


codeCoverageToolOption - Outil de couverture du code
Alias d’entrée : codeCoverageTool. string. Valeurs autorisées : None, Cobertura, JaCoCo. Valeur par défaut : None.

Spécifie l’outil de couverture du code. L’activation de la couverture du code insère l’objectif propre dans la liste des objectifs Maven lors de l’exécution de Maven.


codeCoverageClassFilter - Filtres d’inclusion/d’exclusion de classe
Alias d’entrée : classFilter. string. facultatif. Utilisez quand codeCoverageTool != None.

Spécifie une liste de filtres séparés par des virgules pour inclure ou exclure des classes de la collecte de la couverture du code. Par exemple : +:com.*,+:org.*,-:my.app*.*.


codeCoverageClassFilesDirectories - Répertoires de fichiers de classe
Alias d’entrée : classFilesDirectories. string. facultatif. Utilisez quand codeCoverageTool = JaCoCo.

Ce champ est obligatoire pour un projet multi-module.
Spécifie une liste séparée par des virgules de chemins d’accès relatifs du fichier POM Maven aux répertoires contenant des fichiers de classe et des fichiers d’archive (JAR, WAR, etc.). La couverture du code est signalée pour les fichiers de classe dans ces répertoires. Par exemple : target/classes,target/testClasses.


codeCoverageSourceDirectories - Répertoires de fichiers sources
Alias d’entrée : srcDirectories. string. facultatif. Utilisez quand codeCoverageTool = JaCoCo.

Ce champ est obligatoire pour un projet multi-module.
Spécifie une liste séparée par des virgules de chemins d’accès relatifs du fichier POM Maven aux répertoires de code source. Les rapports de couverture du code les utilisent pour mettre en évidence le code source. Par exemple : src/java,src/Test.


codeCoverageFailIfEmpty - Échec lorsque les résultats de la couverture du code sont manquants
Alias d’entrée : failIfCoverageEmpty. boolean. facultatif. Utilisez quand codeCoverageTool != None. Valeur par défaut : false.

Échec de la génération si la couverture du code n’a pas produit de résultats à publier.


codeCoverageRestoreOriginalPomXml - Restaurer la pom.xml d’origine après l’exécution de la tâche
Alias d’entrée : restoreOriginalPomXml. boolean. facultatif. Utilisez quand codeCoverageTool != None. Valeur par défaut : false.

La couverture du code change pom.xml pour produire des résultats. Utilisez cette option si vous devez conserver l’élément d’origine pom.xml.


javaHomeOption - Définir JAVA_HOME par
Alias d’entrée : javaHomeSelection. string. Obligatoire. Valeurs autorisées : JDKVersion (version JDK), Path. Valeur par défaut : JDKVersion.

Définit JAVA_HOME soit en sélectionnant une version du JDK qui sera découverte pendant les builds, soit en entrant manuellement un chemin d’accès JDK. Si Java est déjà installé sur l’ordinateur de l’agent, vous pouvez le spécifier en configurant javaHomeOption en tant que path et jdkDirectory en tant que chemin d’accès au répertoire installé du JDK.


jdkVersionOption - Version du JDK
Alias d’entrée : jdkVersion. string. facultatif. Utilisez quand javaHomeSelection = JDKVersion. Valeurs autorisées : default, 1.17 (JDK 17), 1.11 (JDK 11), 1.10 (JDK 10 (hors support)), 1.9 (JDK 9 (hors support)), 1.8 (JDK 8), 1.7 (JDK 7), 1.6 (JDK 6 (hors support)). Valeur par défaut : default.

Tente de découvrir le chemin d’accès à la version du JDK sélectionnée et définit JAVA_HOME en conséquence.
Note: En cas d’exécution sur un agent qui n’est pas hébergé par Microsoft et que la version Java demandée n’est pas celle indiquée par la JAVA_HOME variable définie sur l’ordinateur de l’agent, la tâche s’appuie sur la variable JAVA_HOME_{version}_{arch} (par exemple : JAVA_HOME_8_X64) pour localiser le JDK nécessaire. Vérifiez que cette variable est définie sur les agents auto-hébergés pour toutes les versions et architectures du JDK qui peuvent être demandées par ce paramètre et/ou par jdkArchitecture.


jdkDirectory - Chemin JDK
Alias d’entrée : jdkUserInputPath. string. Nécessaire lorsque javaHomeSelection = Path.

Définit JAVA_HOME le chemin d’accès donné.


jdkArchitectureOption - Architecture JDK
Alias d’entrée : jdkArchitecture. string. facultatif. Utilisez quand jdkVersion != default. Valeurs autorisées : x86, x64. Valeur par défaut : x64.

Fournit l’architecture (x86, x64) du JDK.


mavenVersionOption - Version de Maven
Alias d’entrée : mavenVersionSelection. string. Obligatoire. Valeurs autorisées : Default, Path (Chemin personnalisé). Valeur par défaut : Default.

Spécifie la version de Maven par défaut ou la version dans le chemin personnalisé spécifié.


mavenDirectory - Chemin Maven
Alias d’entrée : mavenPath. string. Nécessaire lorsque mavenVersionSelection = Path.

Fournit le chemin d’accès personnalisé à l’installation de Maven (par exemple : /usr/share/maven).


mavenSetM2Home - Définir M2_HOME variable
boolean. facultatif. Utilisez quand mavenVersionSelection = Path. Valeur par défaut : false.

Définit la M2_HOME variable sur un chemin d’installation Maven personnalisé.


mavenOptions - Définissez MAVEN_OPTS sur
Alias d’entrée : mavenOpts. string. Valeur par défaut : -Xmx1024m.

Définit la MAVEN_OPTS variable d’environnement, qui est utilisée pour envoyer des arguments de ligne de commande pour démarrer la JVM. L’indicateur -Xmx spécifie la mémoire maximale disponible pour la machine virtuelle JVM.


mavenAuthenticateFeed - S’authentifier avec des flux d’artefacts
Alias d’entrée : mavenFeedAuthenticate. boolean. Valeur par défaut : false.

S’authentifie automatiquement avec les flux Azure Artifacts. Si les flux Artifacts ne sont pas en cours d’utilisation, désélectionnez cette option pour des builds plus rapides.


effectivePomSkip - Ignorer la génération de POM efficace lors de l’authentification avec les flux Artifacts
Alias d’entrée : skipEffectivePom. boolean. Valeur par défaut : false.

S’authentifie auprès des flux Artifacts à l’aide de POM uniquement.


sonarQubeRunAnalysis - Exécuter une analyse SonarQube ou SonarCloud
Alias d’entrée : sqAnalysisEnabled. boolean. Valeur par défaut : false.

Cette option est passée de la version 1 de la tâche Maven à l’utilisation des extensions De place de marché SonarQube et SonarCloud .
Activez cette option pour exécuter l’analyse SonarQube ou SonarCloud après avoir exécuté des objectifs dans le champ Objectifs . L’objectif d’installation ou de package doit s’exécuter en premier. Avant cette tâche Maven, vous devez également ajouter une tâche Préparer la configuration de l’analyse à partir de l’une des extensions au pipeline de build.


isJacocoCoverageReportXML - Utiliser des rapports Jacoco XML pour l’analyse SonarQube
boolean. facultatif. Utilisez quand sqAnalysisEnabled = true && codeCoverageTool = JaCoCo. Valeur par défaut : false.

Utilise des rapports Jacoco XML pour l’analyse SonarQube. En savoir plus sur les rapports de test.


sqMavenPluginVersionChoice - Scanneur SonarQube pour la version Maven
string. Nécessaire lorsque sqAnalysisEnabled = true. Valeurs autorisées : latest (Utiliser la dernière version), pom (Utiliser la version déclarée dans votre pom.xml). Valeur par défaut : latest.

Spécifie la version du plug-in SonarQube Maven à utiliser. Vous pouvez utiliser la dernière version ou vous appuyer sur la version dans votre pom.xml.


checkStyleRunAnalysis - Exécuter Checkstyle
Alias d’entrée : checkstyleAnalysisEnabled. boolean. Valeur par défaut : false.

Exécute l’outil Checkstyle avec les vérifications Sun par défaut. Si aucune configuration Checkstyle n’est spécifiée dans le fichier, les pom.xml vérifications Sun par défaut sont utilisées. Les résultats sont chargés en tant qu’artefacts de build.


pmdRunAnalysis - Exécuter PMD
Alias d’entrée : pmdAnalysisEnabled. boolean. Valeur par défaut : false.

Utilise l’outil d’analyse statique PMD pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu’artefacts de build.


findBugsRunAnalysis - Exécuter FindBugs
Alias d’entrée : findbugsAnalysisEnabled. boolean. Valeur par défaut : false.

Utilise l’outil d’analyse statique FindBugs pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu’artefacts de build.


spotBugsRunAnalysis - Exécuter l’analyse SpotBugs
Alias d’entrée : spotBugsAnalysisEnabled. boolean. Valeur par défaut : false.

Activez cette option pour exécuter le plug-in d’analyse du code SpotBugs. Plus d’informations sur le plug-in SpotBugs Maven.


spotBugsVersion - Numéro de version
Alias d’entrée : spotBugsMavenPluginVersion. string. facultatif. Utilisez quand spotBugsAnalysisEnabled = true. Valeur par défaut : 4.5.3.0.

Découvrez les versions disponibles de SpotBugs.


spotBugsGoal - Objectif du plug-in spotbugs
string. facultatif. Utilisez quand spotBugsAnalysisEnabled = true. Valeurs autorisées : spotbugs (« spotbugs » - Crée un rapport sur les bogues trouvés), check (« case activée » - Le pipeline échoue si des bogues ont été détectés). Valeur par défaut : spotbugs.

Spécifie l’objectif du plug-in. En savoir plus sur les objectifs SpotBugs.


failWhenBugsFound - Échec lorsque des bogues sont détectés avec spotbugs:case activée
Alias d’entrée : spotBugsFailWhenBugsFound | sbFailWhenBugsFound. boolean. facultatif. Utilisez quand spotBugsAnalysisEnabled = true && spotBugsGoal = check. Valeur par défaut : true.

Échoue lorsque des bogues sont détectés si l’objectif de vérification est spécifié. En savoir plus sur les détails des paramètres SpotBug.


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

La configuration de l’analyse SonarQube a été déplacée vers les extensions SonarQube ou SonarCloud dans la tâche Préparer la configuration de l’analyse.

Important

Lors de l’utilisation de l’option -q dans votre MAVEN_OPTS, un pom effectif n’est pas généré correctement et les flux Azure Artifacts peuvent ne pas pouvoir être authentifiés.

Important

Si la version du JDK que vous souhaitez utiliser est déjà installée sur votre agent, définissez javaHomeOptionpath sur et définissez sur jdkDirectory le chemin d’accès de la version JDK. Ces options définissent la JAVA_HOME_11_X64 variable d’environnement requise par la tâche Maven. Cette variable d’environnement est définie automatiquement si vous utilisez la tâche du programme d’installation de l’outil Java.

Questions fréquentes (FAQ)

J’ai un projet multi-module, mais ma build échoue. Que dois-je case activée ?

Vérifiez que vous avez spécifié #codeCoverageClassFilesDirectories et #codeCoverageSourceDirectories en tant qu’entrée de tâche. Ces deux paramètres sont facultatifs pour un projet de module unique, mais sont requis pour les projets multi-modules.

Exemples

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes Les agents auto-hébergés doivent avoir des fonctionnalités qui correspondent aux exigences suivantes pour exécuter des travaux qui utilisent cette tâche : maven
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent 1.89.0 ou version ultérieure
Catégorie de la tâche Build

Voir aussi