Tarea Maven

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

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
    #codeCoverageSourceDirectories: # Optional
    #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
Maven archivo POM
(Obligatorio) Ruta de acceso relativa desde la raíz del repositorio al archivo POM Maven. Vea Introduction to the POM (Introducción al POM).
Valor predeterminado: pom.xml
Alias de argumento: mavenPomFile
goals
Objetivos
(Opcional) En la mayoría de los casos, establezca esta opción en package 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
Publicar en Azure Pipelines
(Obligatorio) Seleccione esta opción para publicar los resultados de pruebas de JUnit generados por la compilación de Maven para Azure Pipelines. Cada coincidencia de archivos de resultados Test Results Files de prueba se publicará como una ejecución de prueba en Azure Pipelines.
Valor predeterminado: true
testResultsFiles
Archivos de resultados de prueba
(Obligatorio) Especifique la ruta de acceso y el patrón de los archivos de resultados de prueba que se publicarán. 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 se comparan debajo del directorio de trabajo predeterminado, cuyo valor está disponible en la variable: $(System.DefaultWorkingDirectory).
Por ejemplo, un valor de ' /TEST- .xml" dará como resultado archivos correspondientes de "$(System.DefaultWorkingDirectory)/ /TEST-.xml'.
Valor predeterminado: **/surefire-reports/TEST-*.xml
testRunTitle
Título de la ejecución de prueba
(Opcional) Proporcione un nombre para la ejecución de pruebas.
allowBrokenSymbolicLinks
Archivos de resultados de prueba
(Opcional) Establezca false para producir un error de 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, clean el objetivo se inserta 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 la recopilación de cobertura de código. For example: +: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 Maven a 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 desde el archivo POM Maven hasta los 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 produjo 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 especificando manualmente una ruta de acceso de JDK. Tenga en cuenta que si ya tiene java instalado en el equipo del agente , puede especificarlo configurando "javaHomeOption" como "path" y "jdkDirectory", como una 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 la máquina del agente, la tarea se basará en la variable (por ejemplo, ) para buscar el JAVA_HOME_8_X64 JDK necesario. Asegúrese de que esta variable está establecida en agentes auto-hospedados 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 la máquina del agente, la tarea se basará en la variable (por ejemplo, ) para buscar el JAVA_HOME_8_X64 JDK necesario. Asegúrese de que esta variable está establecida en agentes auto-hospedados 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: 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 de Maven personalizada.
Valor predeterminado: false
mavenOpts
Establezca MAVEN_OPTS en
(Opcional) Establece la MAVEN_OPTS de entorno, 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 jvm.
Valor predeterminado: -Xmx1024m
Alias de argumento: mavenOptions
mavenFeedAuthenticate
Autenticación de fuentes de Maven integradas
(Obligatorio) Autentique automáticamente las fuentes de Maven 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 efectivo al autenticar fuentes integradas
(Obligatorio) Autentique las fuentes de Maven integradas solo con pom, lo que permite los POM primarios en Azure Artifacts/Azure DevOps Server [Administración de paquetes].
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 de 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 los 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 desde 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 usará. Puede usar la versión más reciente o confiar en la versión de su pom.xml.
Valor predeterminado: latest
checkstyleAnalysisEnabled
Ejecutar checkstyle
(Opcional) Ejecute la herramienta Checkstyle. Si no se especifica ninguna configuración checkstyle en el 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
Ejecución de Find Estaciones de trabajo
(Opcional) Use la herramienta de análisis estático Find Bugs 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 MAVEN_OPTS, no se generará correctamente un pom efectivo y es posible Azure Artifacts que las fuentes no se -q puedan autenticar.

Ejemplo

Compilación e implementación de una 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

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