Compartilhar via


Maven@4 - Tarefa Maven v4

Compilar, testar e implantar com o Apache Maven.

Sintaxe

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

Entradas

mavenPOMFile - Arquivo POM do Maven
string. Obrigatórios. Valor padrão: pom.xml.

Especifica o caminho relativo da raiz do repositório para o arquivo POM do Maven. Consulte Introdução ao POM para obter mais informações.


goals - Meta(s)
string. Valor padrão: package.

(Opcional) Defina como package para compilar seu código e empacotá-lo em um arquivo .war. Se você deixar esse argumento em branco, o build falhará. Confira Introdução ao ciclo de vida de build do Maven para obter mais informações.


options - Opções
string.

(Opcional) Especifica as opções de linha de comando do Maven que você deseja usar.


publishJUnitResults - Publicar no Azure Pipelines
boolean. Valor padrão: true.

Especifica a opção de publicar os resultados do teste JUnit produzidos pelo build do Maven no Azure Pipelines. Cada correspondência Test Results Files de arquivo de resultados de teste será publicada como uma execução de teste no Azure Pipelines.


testResultsFiles - Arquivos de resultados de teste
string. Obrigatório quando publishJUnitResults = true. Valor padrão: **/surefire-reports/TEST-*.xml.

Especifica o caminho e o padrão dos arquivos de resultados de teste a serem publicados.
Caracteres curinga podem ser usados.
Mais informações sobre padrões de correspondência de arquivos.
Por exemplo, **/TEST-*.xml para todos os arquivos XML cujo nome começa com TEST-. Se nenhum caminho raiz for especificado, os arquivos serão correspondidos abaixo do diretório de trabalho padrão, cujo valor está disponível na variável $(System.DefaultWorkingDirectory). Por exemplo, um valor de **/TEST-*.xml resultará na correspondência de arquivos de $(System.DefaultWorkingDirectory)/**/TEST-*.xml.


testRunTitle - Título da execução de teste
string. Opcional. Use quando publishJUnitResults = true.

Especifica um nome para a execução de teste.


allowBrokenSymlinks - Permitir links simbólicos quebrados
Alias de entrada: allowBrokenSymbolicLinks. boolean. Opcional. Use quando publishJUnitResults = true. Valor padrão: true.

Se definido falsecomo , falhará no build quando a tarefa encontrar um link simbólico quebrado durante a publicação dos resultados dos testes.


codeCoverageToolOption - Ferramenta de cobertura de código
Alias de entrada: codeCoverageTool. string. Valores permitidos: None, Cobertura, JaCoCo. Valor padrão: None.

Especifica a ferramenta de cobertura de código. Habilitar a cobertura de código insere a meta limpo na lista de metas do Maven quando o Maven é executado.


codeCoverageClassFilter - Filtros de inclusão/exclusão de classe
Alias de entrada: classFilter. string. Opcional. Use quando codeCoverageTool != None.

Especifica uma lista separada por vírgulas de filtros para incluir ou excluir classes da coleta de cobertura de código. Por exemplo, +:com.*,+:org.*,-:my.app*.*.


codeCoverageClassFilesDirectories - Diretórios de arquivos de classe
Alias de entrada: classFilesDirectories. string. Opcional. Use quando codeCoverageTool = JaCoCo.

Esse campo é necessário para um projeto de vários módulos.
Especifica uma lista separada por vírgulas de caminhos relativos do arquivo POM do Maven para diretórios que contêm arquivos de classe e arquivos de arquivo (JAR, WAR etc.). A cobertura de código é relatada para arquivos de classe nesses diretórios. Por exemplo, target/classes,target/testClasses.


codeCoverageSourceDirectories - Diretórios de arquivos de origem
Alias de entrada: srcDirectories. string. Opcional. Use quando codeCoverageTool = JaCoCo.

Esse campo é necessário para um projeto de vários módulos.
Especifica uma lista separada por vírgulas de caminhos relativos do arquivo POM do Maven para diretórios de código-fonte. Os relatórios de cobertura de código os usam para realçar o código-fonte. Por exemplo, src/java,src/Test.


codeCoverageFailIfEmpty - Falha quando os resultados da cobertura de código estão ausentes
Alias de entrada: failIfCoverageEmpty. boolean. Opcional. Use quando codeCoverageTool != None. Valor padrão: false.

Falha no build se a cobertura de código não produzir resultados para publicação.


codeCoverageRestoreOriginalPomXml - Restaurar pom.xml originais após a execução da tarefa
Alias de entrada: restoreOriginalPomXml. boolean. Opcional. Use quando codeCoverageTool != None. Valor padrão: false.

A cobertura de código é modificada pom.xml para produzir resultados. Use essa opção se precisar manter o original pom.xml.


javaHomeOption - Definir JAVA_HOME por
Alias de entrada: javaHomeSelection. string. Obrigatórios. Valores permitidos: JDKVersion (Versão do JDK), Path. Valor padrão: JDKVersion.

Define JAVA_HOME selecionando uma versão do JDK que será descoberta durante builds ou inserindo manualmente um caminho do JDK. Se você já tiver o Java instalado no computador do agente, poderá especificá-lo configurando javaHomeOption como path e jdkDirectory como um caminho para o diretório instalado do JDK.


jdkVersionOption - Versão do JDK
Alias de entrada: jdkVersion. string. Opcional. Use quando javaHomeSelection = JDKVersion. Valores permitidos: default, 1.17 (JDK 17), 1.11 (JDK 11), 1.10 (JDK 10 (sem suporte)), 1.9 (JDK 9 (sem suporte)), 1.8 (JDK 8), 1.7 (JDK 7) 1.6 (JDK 6 (sem suporte)). Valor padrão: default.

Tenta descobrir o caminho para a versão do JDK selecionada e define JAVA_HOME adequadamente.
Nota: Se estiver em execução em um agente que não é hospedado pela Microsoft e a versão do Java solicitada não for a indicada pela JAVA_HOME variável definida no computador do agente, a tarefa dependerá da variável JAVA_HOME_{version}_{arch} (por exemplo: JAVA_HOME_8_X64) para localizar o JDK necessário. Verifique se essa variável está definida em agentes auto-hospedados para qualquer versão e arquitetura do JDK que possa ser solicitada por esse parâmetro e/ou por jdkArchitecture.


jdkDirectory - Caminho do JDK
Alias de entrada: jdkUserInputPath. string. Obrigatório quando javaHomeSelection = Path.

Define JAVA_HOME para o caminho fornecido.


jdkArchitectureOption - Arquitetura do JDK
Alias de entrada: jdkArchitecture. string. Opcional. Use quando jdkVersion != default. Valores Permitidos: x86 e x64. Valor padrão: x64.

Fornece a arquitetura (x86, x64) do JDK.


mavenVersionOption - Versão do Maven
Alias de entrada: mavenVersionSelection. string. Obrigatórios. Valores permitidos: Default, Path (Caminho Personalizado). Valor padrão: Default.

Especifica a versão padrão do Maven ou a versão no caminho personalizado especificado.


mavenDirectory - Caminho do Maven
Alias de entrada: mavenPath. string. Obrigatório quando mavenVersionSelection = Path.

Fornece o caminho personalizado para a instalação do Maven (por exemplo: /usr/share/maven).


mavenSetM2Home - Definir variável de M2_HOME
boolean. Opcional. Use quando mavenVersionSelection = Path. Valor padrão: false.

Define a M2_HOME variável como um caminho de instalação personalizado do Maven.


mavenOptions - Definir MAVEN_OPTS como
Alias de entrada: mavenOpts. string. Valor padrão: -Xmx1024m.

Define a MAVEN_OPTS variável de ambiente, que é usada para enviar argumentos de linha de comando para iniciar a JVM. O -Xmx sinalizador especifica a memória máxima disponível para a JVM.


mavenAuthenticateFeed - Autenticar com feeds do Artifacts
Alias de entrada: mavenFeedAuthenticate. boolean. Valor padrão: false.

Autentica automaticamente com feeds do Azure Artifacts. Se os feeds do Artifacts não estiverem em uso, desmarque essa opção para compilações mais rápidas.


effectivePomSkip - Ignorar a geração de POM eficaz durante a autenticação com feeds do Artifacts
Alias de entrada: skipEffectivePom. boolean. Valor padrão: false.

Autentica com feeds do Artifacts usando apenas o POM.


sonarQubeRunAnalysis - Executar a análise do SonarQube ou do SonarCloud
Alias de entrada: sqAnalysisEnabled. boolean. Valor padrão: false.

Essa opção mudou de usar a versão 1 da tarefa Maven para usar as extensões do marketplace SonarQube e SonarCloud .
Habilite essa opção para executar a análise do SonarQube ou do SonarCloud após a execução de metas no campo Metas . A meta de instalação ou pacote deve ser executada primeiro. Antes dessa tarefa do Maven, você também deve adicionar uma tarefa Preparar Configuração de Análise de uma das extensões ao pipeline de build.


isJacocoCoverageReportXML - Usar relatórios de Jacoco XML para análise do SonarQube
boolean. Opcional. Use quando sqAnalysisEnabled = true && codeCoverageTool = JaCoCo. Valor padrão: false.

Usa relatórios de Jacoco XML para análise do SonarQube. Saiba mais sobre relatórios de teste.


sqMavenPluginVersionChoice - Scanner SonarQube para a versão do Maven
string. Obrigatório quando sqAnalysisEnabled = true. Valores permitidos: latest (Use a versão mais recente) pom (Use a versão declarada em seu pom.xml). Valor padrão: latest.

Especifica a versão do plug-in SonarQube Maven a ser usada. Você pode usar a versão mais recente ou contar com a versão em seu pom.xml.


checkStyleRunAnalysis - Executar o Estilo de Verificação
Alias de entrada: checkstyleAnalysisEnabled. boolean. Valor padrão: false.

Executa a ferramenta Checkstyle com as verificações sun padrão. Se nenhuma configuração checkstyle for especificada no arquivo, as pom.xml verificações sun padrão serão usadas. Os resultados são carregados como artefatos de build.


pmdRunAnalysis - Executar PMD
Alias de entrada: pmdAnalysisEnabled. boolean. Valor padrão: false.

Usa a ferramenta de análise estática do PMD para procurar bugs no código. Os resultados são carregados como artefatos de build.


findBugsRunAnalysis - Executar FindBugs
Alias de entrada: findbugsAnalysisEnabled. boolean. Valor padrão: false.

Usa a ferramenta de análise estática FindBugs para procurar bugs no código. Os resultados são carregados como artefatos de build.


spotBugsRunAnalysis - Executar análise de SpotBugs
Alias de entrada: spotBugsAnalysisEnabled. boolean. Valor padrão: false.

Habilite essa opção para executar o plug-in de análise de código SpotBugs. Mais informações sobre o plug-in do Maven SpotBugs.


spotBugsVersion - Número de versão
Alias de entrada: spotBugsMavenPluginVersion. string. Opcional. Use quando spotBugsAnalysisEnabled = true. Valor padrão: 4.5.3.0.

Saiba mais sobre as versões disponíveis do SpotBugs.


spotBugsGoal - A meta para o plug-in spotbugs
string. Opcional. Use quando spotBugsAnalysisEnabled = true. Valores permitidos: spotbugs ("spotbugs" – cria um relatório sobre bugs encontrados) check ("marcar" – o pipeline falha se os bugs forem detectados). Valor padrão: spotbugs.

Especifica a meta do plug-in. Saiba mais sobre as metas do SpotBugs.


failWhenBugsFound - Falha quando os bugs são encontrados com spotbugs:marcar
Alias de entrada: spotBugsFailWhenBugsFound | sbFailWhenBugsFound. boolean. Opcional. Use quando spotBugsAnalysisEnabled = true && spotBugsGoal = check. Valor padrão: true.

Falha quando os bugs são encontrados se a Meta de Verificação for especificada. Saiba mais sobre detalhes do parâmetro SpotBug.


Opções de controle de tarefa

Todas as tarefas têm opções de controle além de suas entradas de tarefa. Para obter mais informações, consulte Opções de controle e propriedades comuns da tarefa.

Variáveis de saída

Nenhum.

Comentários

A configuração da análise do SonarQube foi movida para as extensões SonarQube ou SonarCloud na tarefa Preparar Configuração de Análise.

Importante

Ao usar a opção -q em seu MAVEN_OPTS, um pom efetivo não será gerado corretamente e os feeds do Azure Artifacts podem não ser capazes de ser autenticados.

Importante

Se a versão do JDK que você deseja usar já estiver instalada no agente, defina javaHomeOption como path e defina como o jdkDirectory caminho da versão do JDK. Essas opções definem a JAVA_HOME_11_X64 variável de ambiente, que é exigida pela tarefa Maven. Essa variável de ambiente será definida automaticamente se você estiver usando a tarefa do instalador da Ferramenta Java.

Perguntas frequentes

Tenho um projeto de vários módulos, mas minha compilação está falhando. O que devo marcar?

Verifique se você especificou #codeCoverageClassFilesDirectories e #codeCoverageSourceDirectories como uma entrada de tarefa. Esses dois parâmetros são opcionais para um único projeto de módulo, mas são necessários para projetos de vários módulos.

Exemplos

Requisitos

Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
Executa em Agent, DeploymentGroup
Demandas Os agentes auto-hospedados devem ter recursos que correspondam às seguintes demandas para executar trabalhos que usam esta tarefa: maven
Funcionalidades Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 1.89.0 ou superior
Categoria da tarefa Build

Confira também