Tarea Maven

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Use esta tarea para compilar el código java.

Peticiones

El agente de compilación debe tener la siguiente funcionalidad:

  • Maven

Fragmento de código YAML

# Maven
# Build, test, and deploy with Apache Maven
- task: Maven@3
  inputs:
    #mavenPomFile: 'pom.xml' 
    #goals: 'package' # Optional
    #options: # Optional
    #publishJUnitResults: true 
    #testResultsFiles: '**/surefire-reports/TEST-*.xml' # Required when publishJUnitResults == True
    #testRunTitle: # Optional
    #allowBrokenSymlink: false # Optional. Has effect only when publishJUnitResults == True
    #codeCoverageToolOption: 'None' # Optional. Options: none, cobertura, jaCoCo. Enabling code coverage inserts the `clean` goal into the Maven goals list when Maven runs.
    #codeCoverageClassFilter: # Optional. Comma-separated list of filters to include or exclude classes from collecting code coverage. For example: +:com.*,+:org.*,-:my.app*.*
    #codeCoverageClassFilesDirectories: # Optional | Required for a multi-module project
    #codeCoverageSourceDirectories: # Optional | Required for a multi-module project
    #codeCoverageFailIfEmpty: false # Optional
    #javaHomeOption: 'JDKVersion' # Options: jDKVersion, path
    #jdkVersionOption: 'default' # Optional. Options: default, 1.14, 1.13, 1.12, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6
    #jdkDirectory: # Required when javaHomeOption == Path
    #jdkArchitectureOption: 'x64' # Optional. Options: x86, x64
    #mavenVersionOption: 'Default' # Options: default, path
    #mavenDirectory: # Required when mavenVersionOption == Path
    #mavenSetM2Home: false # Required when mavenVersionOption == Path
    #mavenOptions: '-Xmx1024m' # Optional
    #mavenAuthenticateFeed: false 
    #effectivePomSkip: false 
    #sonarQubeRunAnalysis: false 
    #sqMavenPluginVersionChoice: 'latest' # Required when sonarQubeRunAnalysis == True# Options: latest, pom
    #checkStyleRunAnalysis: false # Optional
    #pmdRunAnalysis: false # Optional
    #findBugsRunAnalysis: false # Optional

Argumentos

Argumento Descripción
mavenPOMFile
Archivo POM de Maven
(Obligatorio) Ruta de acceso relativa desde la raíz del repositorio al archivo POM de Maven. Consulte Introducción al POM.
Valor predeterminado: pom.xml
Alias de argumento: mavenPomFile
goals
Objetivos
(Opcional) En la mayoría de los casos, establézcalo package en para compilar el código y empaquetarlo en un archivo .war. Si deja este argumento en blanco, se producirá un error en la compilación. Consulte Introducción al ciclo de vida de compilación de Maven.
Valor predeterminado: paquete
options
Opciones
(Opcional) Especifique las opciones de línea de comandos de Maven que quiera usar.
publishJUnitResults
Publicación en Azure Pipelines
(Obligatorio) Seleccione esta opción para publicar los resultados de pruebas de JUnit generados por la compilación de Maven en Azure Pipelines. Cada coincidencia Test Results Files de archivos de resultados de prueba se publicará como una ejecución de prueba en Azure Pipelines.
Valor predeterminado: true.
testResultsFiles
Archivos de resultados de pruebas
(Obligatorio) Especifique la ruta de acceso y el patrón de los archivos de resultados de pruebas que se van a publicar. Se pueden usar caracteres comodín (más información). Por ejemplo, */TEST-.xml para todos los archivos XML cuyo nombre comienza por TEST-. Si no se especifica ninguna ruta de acceso raíz, los archivos coinciden debajo del directorio de trabajo predeterminado, el valor de que está disponible en la variable : $(System.DefaultWorkingDirectory).
Por ejemplo, un valor de " /TEST- .xml" dará lugar a archivos coincidentes de "$(System.DefaultWorkingDirectory)/ /TEST-.xml".
Valor predeterminado: **/surefire-reports/TEST-*.xml
testRunTitle
Título de la ejecución de pruebas
(Opcional) Proporcione un nombre para la ejecución de pruebas.
allowBrokenSymbolicLinks
Archivos de resultados de pruebas
(Opcional) Establezca false para que se produzca un error en la compilación cuando la tarea cumpla los vínculos simbólicos rotos durante las pruebas de publicación. Solo tiene un efecto si publishJUnitResults se establece. true
Valor predeterminado: true.
Alias de argumento: allowBrokenSymlink
codeCoverageTool
Herramienta de cobertura de código
(Opcional) Seleccione la herramienta de cobertura de código. Al habilitar la cobertura de código, se inserta el clean objetivo en la lista de objetivos de Maven cuando se ejecuta Maven.
Valor predeterminado: ninguno
Alias de argumento: codeCoverageToolOption
classFilter
Filtros de inclusión y exclusión de clases
(Opcional) Lista separada por comas de filtros para incluir o excluir clases de recopilación de cobertura de código. Por ejemplo: +:com.,+:org.,-:my.app.
Alias de argumento: codeCoverageClassFilter
classFilesDirectories
Directorios de archivos de clase
(Opcional) Este campo es necesario para un proyecto de varios módulos. Especifique una lista separada por comas de rutas de acceso relativas del archivo POM de Maven en directorios que contengan archivos de clase y archivos de archivo (JAR, WAR, etc.). La cobertura de código se notifica para los archivos de clase de estos directorios.
Por ejemplo: target/classes,target/testClasses.
Alias de argumento: codeCoverageClassFilesDirectories
srcDirectories
Directorios de archivos de origen
(Opcional) Este campo es necesario para un proyecto de varios módulos. Especifique una lista separada por comas de rutas de acceso relativas del archivo POM de Maven en directorios de código fuente. Los informes de cobertura de código los usarán para resaltar el código fuente.
Por ejemplo: src/java,src/Test.
Alias de argumento: codeCoverageSourceDirectories
failIfCoverageEmpty
Error cuando faltan resultados de cobertura de código
(Opcional) Se produce un error en la compilación si la cobertura de código no ha generado ningún resultado para publicar.
Valor predeterminado: false
Alias de argumento: codeCoverageFailIfEmpty
javaHomeSelection
Establecer JAVA_HOME por
(Obligatorio) Establece JAVA_HOME seleccionando una versión de JDK que se detectará durante las compilaciones o escribiendo manualmente una ruta de acceso de JDK. Tenga en cuenta que si ya tiene java instalado en la máquina del agente, puede especificarlo configurando "javaHomeOption" como "path" y "jdkDirectory" como ruta de acceso al directorio instalado de jdk.
Valor predeterminado: JDKVersion
Alias de argumento: javaHomeOption
jdkVersion
Versión de JDK
(Opcional) Intentará detectar la ruta de acceso a la versión de JDK seleccionada y establecer JAVA_HOME en consecuencia.
Nota: Si se ejecuta en un agente no hospedado por Microsoft y la versión de Java solicitada no es la indicada por la variable JAVA_HOME establecida en el equipo del agente, la tarea se basará en la variable JAVA_HOME_<version>_<arch> (por ejemplo JAVA_HOME_8_X64, ), para buscar el JDK necesario. Asegúrese de que esta variable está establecida en agentes autohospedados para cualquier versión y arquitectura del JDK que pueda solicitar este parámetro o .jdkArchitecture
Valor predeterminado: valor predeterminado
Alias de argumento: jdkVersionOption
jdkUserInputPath
Ruta de acceso de JDK
(Obligatorio) Establece JAVA_HOME en la ruta de acceso especificada.
Alias de argumento: jdkDirectory
jdkArchitecture
Arquitectura de JDK
(Opcional) Opcionalmente, proporcione la arquitectura (x86, x64) del JDK.
Nota: Si se ejecuta en un agente no hospedado por Microsoft y la arquitectura de Java solicitada no es la indicada por la variable JAVA_HOME establecida en el equipo del agente, la tarea se basará en la variable JAVA_HOME_<version>_<arch> (por ejemplo JAVA_HOME_8_X64, ), para buscar el JDK necesario. Asegúrese de que esta variable está establecida en agentes autohospedados para cualquier versión y arquitectura del JDK que pueda solicitar este parámetro o .jdkVersion
Valor predeterminado: x64
Alias de argumento: jdkArchitectureOption
mavenVersionSelection
Versión de Maven
(Obligatorio) Usa la versión predeterminada de Maven o la versión de la ruta de acceso personalizada especificada.
Valor predeterminado: Valor predeterminado
Alias de argumento: mavenVersionOption
mavenPath
Ruta de acceso de Maven
(Obligatorio) Proporcione la ruta de acceso personalizada a la instalación de Maven (por ejemplo, /usr/share/maven).
Alias de argumento: mavenDirectory
mavenSetM2Home
Establecer M2_HOME variable
(Obligatorio) Establece la variable M2_HOME en una ruta de instalación personalizada de Maven.
Valor predeterminado: false
mavenOpts
Establezca MAVEN_OPTS en
(Opcional) Establece la variable de entorno MAVEN_OPTS, que se usa para enviar argumentos de línea de comandos para iniciar la JVM. La marca -Xmx especifica la memoria máxima disponible para la JVM.
Valor predeterminado: -Xmx1024m
Alias de argumento: mavenOptions
mavenFeedAuthenticate
Autenticación de fuentes de Maven integradas
(Obligatorio) Autentique automáticamente las fuentes de Maven desde Azure Artifacts. Si las fuentes de Maven integradas no están en uso, anule la selección de esta opción para compilaciones más rápidas.
Valor predeterminado: false
Alias de argumento: mavenAuthenticateFeed
skipEffectivePom
Omitir la generación de POM eficaz durante la autenticación de fuentes integradas
(Obligatorio) Autentique las fuentes de Maven integradas solo con POM, lo que permite las POM primarias en azure Artifacts/Azure DevOps Server [administración de paquetes] fuentes.
Valor predeterminado: false
Alias de argumento: effectivePomSkip
sqAnalysisEnabled
Ejecución del análisis de SonarQube o SonarCloud
(Obligatorio) Esta opción ha cambiado de la versión 1 de la tarea maven para usar las extensiones de Marketplace SonarQube y SonarCloud . Habilite esta opción para ejecutar el análisis de SonarQube o SonarCloud después de ejecutar objetivos en el campo Objetivos . El objetivo de instalación o paquete debe ejecutarse primero. También debe agregar una tarea Preparar configuración de análisis de una de las extensiones a la canalización de compilación antes de esta tarea de Maven.
Valor predeterminado: false
Alias de argumento: sonarQubeRunAnalysis
sqMavenPluginVersionChoice<>escáner SonarQube para la versión de Maven (Obligatorio) La versión del complemento SonarQube Maven que se va a usar. Puede usar la versión más reciente o confiar en la versión de la pom.xml.
Valor predeterminado: más reciente
checkstyleAnalysisEnabled
Ejecutar Checkstyle
(Opcional) Ejecute la herramienta Checkstyle. Si no se especifica ninguna configuración de checkstyle en el archivo pom.xml, se usarán las comprobaciones sun predeterminadas. Los resultados se cargan como artefactos de compilación.
Valor predeterminado: false
Alias de argumento: checkStyleRunAnalysis
pmdAnalysisEnabled
Ejecución de PMD
(Opcional) Use la herramienta de análisis estático PMD para buscar errores en el código. Los resultados se cargan como artefactos de compilación.
Valor predeterminado: false
Alias de argumento: pmdRunAnalysis
findbugsAnalysisEnabled
Ejecutar FindBugs
(Opcional) Use la herramienta de análisis estático FindBugs para buscar errores en el código. Los resultados se cargan como artefactos de compilación.
Valor predeterminado: false
Alias de argumento: findBugsRunAnalysis

Importante

Al usar la opción en el -q MAVEN_OPTS, no se generará correctamente un pom efectivo y es posible que las fuentes de Azure Artifacts no se puedan autenticar.

Importante

Si la versión de JDK que desea usar ya está instalada en el agente, establezca javaHomeOptionpath en y establezca en la jdkDirectory ruta de acceso de la versión de JDK. Estas opciones establecen la JAVA_HOME_11_X64 variable de entorno que requiere la tarea de Maven. Esta variable de entorno se establece automáticamente si usa la tarea del instalador de herramientas de Java.

Ejemplo

Compilación e implementación de la aplicación Java en una aplicación web de Azure

Código Abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

Tengo un proyecto multimódulo, pero se produce un error en la compilación. ¿Qué debo comprobar?

Compruebe que ha especificado #codeCoverageClassFilesDirectories y #codeCoverageSourceDirectories como entrada de tarea. Estos dos parámetros son opcionales solo para un único proyecto de módulo, pero son necesarios para los proyectos de varios módulos.

¿Necesito un agente?

Necesita al menos un agente para ejecutar la compilación o versión.

Tengo problemas. ¿Cómo puedo solucionarlos?

Vea Solución de problemas de compilación y versión.

No se puede seleccionar un grupo de agentes predeterminado y no se puede poner en cola la compilación o versión. ¿Cómo puedo corregirlo?

Vea Grupos de agentes.

La tarea de envío de cambios de NuGet genera el error siguiente: "Error: no se puede obtener el certificado del emisor local". ¿Cómo lo puedo corregir?

Esto se puede corregir si se añade un certificado raíz de confianza. Puede agregar la variable de entorno NODE_EXTRA_CA_CERTS=file al agente de compilación, o bien la variable de tarea NODE.EXTRA.CA.CERTS=file en la canalización. Vea la documentación de Node.js para obtener más detalles sobre esta variable. Consulte Establecimiento de variables en una canalización para obtener instrucciones sobre cómo establecer una variable en la canalización.

Utilizo TFS en el entorno local y no veo algunas de estas características. ¿Por qué no?

Algunas de estas características solo están disponibles en Azure Pipelines y todavía no lo están en el entorno local. Algunas características están disponibles en el entorno local si ha actualizado a la versión más reciente de TFS.