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 |
|---|---|
mavenPOMFileMaven 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 |
goalsObjetivos |
(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 |
optionsOpciones |
(Opcional) Especifique las opciones de línea de comandos de Maven que quiera usar. |
publishJUnitResultsPublicar 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 |
testResultsFilesArchivos 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 |
testRunTitleTítulo de la ejecución de prueba |
(Opcional) Proporcione un nombre para la ejecución de pruebas. |
allowBrokenSymbolicLinksArchivos 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 |
codeCoverageToolHerramienta 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 |
classFilterFiltros 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 |
classFilesDirectoriesDirectorios 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 |
srcDirectoriesDirectorios 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 |
failIfCoverageEmptyError 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 |
javaHomeSelectionEstablecer 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 |
jdkVersionVersió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 |
jdkUserInputPathRuta de acceso de JDK |
(Obligatorio) Establece JAVA_HOME en la ruta de acceso especificada. Alias de argumento: jdkDirectory |
jdkArchitectureArquitectura 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 |
mavenVersionSelectionVersió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 |
mavenPathRuta 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 |
mavenSetM2HomeEstablecer M2_HOME variable |
(Obligatorio) Establece la variable M2_HOME en una ruta de instalación de Maven personalizada. Valor predeterminado: false |
mavenOptsEstablezca 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 |
mavenFeedAuthenticateAutenticació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 |
skipEffectivePomOmitir 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 |
sqAnalysisEnabledEjecució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 |
checkstyleAnalysisEnabledEjecutar 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 |
pmdAnalysisEnabledEjecució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 |
findbugsAnalysisEnabledEjecució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.