Compilación de aplicaciones Java

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Puede utilizar una canalización para:

Si está trabajando en un proyecto de Android, consulte Compilación, prueba e implementación de aplicaciones Android.

Requisitos previos

Para ejecutar el ejemplo siguiente, debe tener:

  • Una cuenta de GitHub en la que pueda crear un repositorio. cree una de forma gratuita.
  • Acceso a una colección de Azure DevOps Server.
  • La capacidad de ejecutar Azure Pipelines en agentes autohospedados de Azure DevOps.
  • Un proyecto de Azure DevOps. Si no tiene uno, cree un proyecto ahora.

Crear un repositorio de GitHub

Bifurque el siguiente repositorio en su cuenta de GitHub:

https://github.com/MicrosoftDocs/pipelines-java

Crear una canalización

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.

  2. Vaya a Canalizaciones, and then select Nueva canalización o Crear canalización if creating the first pipeline in the project.

  3. Siga los pasos del asistente y seleccione primero GitHub como ubicación del código fuente. Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.

  4. Seleccione el repositorio. Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.

  5. Cuando vea la pestaña Configurar su canalización, seleccione Maven, Gradle o Ant en función de cómo quiera compilar el código.

  6. Se crea un archivo azure-pipelines-yml que contiene la definición de canalización en el repositorio y se abre en el editor de YAML. Puede personalizar la canalización añadiendo más tareas o modificando las existentes. Para obtener más información sobre las tareas de compilación, consulte Compilación del código.

  7. Cuando haya terminado de editar el mensaje, seleccione azure-pipelines.yml, select Guardar y ejecutar.

  8. Para confirmar el archivo en el archivo azure-pipelines.yml de su repositorio, seleccione Guardar y ejecutar de nuevo.

Seleccione Trabajo para ver la canalización en acción.

  1. Vaya a su colección y seleccione su proyecto.

  2. Seleccione Canalizaciones, and then select Nueva canalización o Crear canalización if creating the first pipeline in the project.

  3. Ejecute los pasos del asistente y seleccione primero GitHub Enterprise Server como ubicación del código fuente.

  4. Utilice una conexión de servicio GitHub existente o cree una nueva.

    Crear una conexión de servicio

    1. Seleccione Conexión al servidor de GitHub Enterprise.
    2. Introduzca la URL de su GitHub Enterprise Server.
    3. Introduzca su token de acceso personal a GitHub Enterprise Server. Si no dispone de un token de acceso personal, puede crear uno en su cuenta de GitHub Enterprise Server. Para más información, vea Creación de un token de acceso personal.
  5. Seleccione el repositorio. Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.

  6. Cuando vea la pestaña Configurar su canalización, seleccione Maven, Gradle o Ant en función de cómo quiera compilar el código.

  7. Se crea un archivo azure-pipelines-yml que contiene la definición de canalización en el repositorio y se abre en el editor de YAML. Puede personalizar la canalización añadiendo más tareas o modificando las existentes. Para obtener más información sobre las tareas de compilación, consulte Compilación del código.

  8. Cuando haya terminado de editar el mensaje, seleccione azure-pipelines.yml, select Guardar y ejecutar.

  9. Para confirmar el archivo en el archivo azure-pipelines.yml de su repositorio, seleccione Guardar y ejecutar de nuevo.

Puede seleccionar Trabajo para ver la canalización en acción.

Ahora ya tiene en el repositorio una canalización YAML (azure-pipelines.yml) que funciona y que está lista para que pueda personalizarla. Para realizar cambios en la canalización, selecciónela en la página Canalizaciones y, luego, haga clic en Editar para modificar el archivo azure-pipelines.yml.

Entorno de compilación

Puede usar Azure Pipelines para compilar aplicaciones de Java sin tener que configurar ninguna infraestructura propia. Puede compilarlas en imágenes de Windows, Linux o macOS. Los agentes hospedados por Microsoft en Azure Pipelines tienen JDK modernos y otras herramientas para Java preinstalado. Para saber qué versiones de Java están instaladas, consulte Agentes hospedados por Microsoft.

Actualice el siguiente fragmento de código en el archivo azure-pipelines.yml para seleccionar la imagen adecuada.

pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

Consulte Agentes hospedados por Microsoft para obtener una lista completa de imágenes.

Como alternativa al uso de agentes hospedados por Microsoft, puede configurar agentes autohospedados con Java instalado. También puede usar agentes autohospedados para ahorrar más tiempo si tiene un repositorio grande o ejecute compilaciones incrementales.

Las compilaciones se ejecutan en un agente autohospedado. Asegúrese de que tiene Java y las herramientas necesarias para construir con el método elegido instalado en el host del agente.

Puede seleccionar el grupo de agentes y las funcionalidades del agente en las secciones Grupo de agentes y Especificación del agente de la pestaña Opciones del editor de canalizaciones.

Por ejemplo, para especificar el grupo de agentes y un agente con la funcionalidad de Maven, agregue el siguiente fragmento de código al archivo azure-pipelines.yml.

pool: 
  name: MyPool
  demands: maven

Compilar el código

Puede compilar la aplicación Java con Maven, Gradle, Ant o un script. Las siguientes secciones muestran cómo añadir un paso de compilación a su canalización para cada método.

Maven

Con la compilación de Maven, las siguientes tareas de código se agrega al archivo azure-pipelines.yml. Sustituya los valores para adaptarlos a su proyecto. Para más información sobre las opciones de tareas, consulte la tarea Maven.

steps:
- task: Maven@4
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    goals: 'package'

Para Spring Boot, también puede usar la tarea Maven. Asegúrese de que el valor mavenPomFile refleje la ruta de acceso al archivo pom.xml. Por ejemplo, si usa el repositorio de ejemplo de Spring Boot, la ruta de acceso será complete/pom.xml.

Personalización de la ruta de acceso de compilación

Ajuste el valor mavenPomFile si el archivo pom.xml no está en la raíz del repositorio. El valor de la ruta de acceso del archivo debe ser relativo a la raíz del repositorio, como IdentityService/pom.xml o $(system.defaultWorkingDirectory)/IdentityService/pom.xml.

Personalización de los objetivos de Maven

Establezca el valor goals en una lista separada por espacios de objetivos de ejecución de Maven, como clean package. Para más información sobre las fases y los objetivos comunes de Java, consulte la documentación de Maven de Apache.

Gradle

Con la compilación de Gradle, la siguiente tarea se agrega al archivo azure-pipelines.yml. Para más información sobre estas opciones, consulte la tarea Gradle.

steps:
- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Contenedor de Gradle

Debe tener un archivo gradlew en su repositorio. Si no tiene uno, puede generarlo ejecutando gradle wrapper en el directorio raíz de su proyecto. Para obtener información sobre cómo crear un contenedor de Gradle, consulte Gradle.

Elección de la versión de Gradle

Se usará la versión de Gradle instalada en la máquina de agente a menos que el archivo gradle/wrapper/gradle-wrapper.properties del repositorio tenga una propiedad distributionUrl que especifique otra versión de Gradle para descargar y usar durante la compilación.

Ajuste de la ruta de acceso de compilación

Ajuste el valor workingDirectory si el archivo gradlew no está en la raíz del repositorio. El valor del directorio debe ser relativo a la raíz del repositorio, como IdentityService o $(system.defaultWorkingDirectory)/IdentityService.

Ajuste el valor gradleWrapperFile si el archivo gradlew no está en la raíz del repositorio. El valor de la ruta de acceso del archivo debe ser relativo a la raíz del repositorio, como IdentityService/gradlew o $(system.defaultWorkingDirectory)/IdentityService/gradlew.

Ajuste de las tareas de Gradle

Ajuste el valor tasks de las tareas que debe ejecutar Gradle, como build o check. Para más información sobre las tareas comunes del complemento de Java para Gradle, consulte la documentación de Gradle.

Ant

Con la compilación de Ant, agregue la siguiente tarea a su archivo azure-pipelines.yml. Cambie los valores, como la ruta de acceso al archivo build.xml para que coincida con la configuración del proyecto. Para más información sobre estas opciones, consulte la tarea Ant. Si utiliza el repositorio de ejemplo, debe proporcionar un archivo build.xml en su repositorio.

steps:
- task: Ant@1
  inputs:
    workingDirectory: ''
    buildFile: 'build.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'

Script

Para realizar la compilación con una línea de comandos o un script, agregue uno de los fragmentos de código siguientes al archivo azure-pipelines.yml.

Script en línea

El paso script: ejecuta un script insertado mediante Bash en Linux y macOS y el símbolo del sistema en Windows. Para más información, consulte la tarea Bash o Línea de comandos.

steps:
- script: |
    echo Starting the build
    mvn package
  displayName: 'Build with Maven'

Archivo de script

Esta tarea ejecuta un archivo de script que se encuentra en el repositorio. Para más información, consulte la tarea Script de Shell, Script de Batch o PowerShell.

steps:
- task: ShellScript@2
  inputs:
    scriptPath: 'build.sh'

Pasos siguientes

Puede publicar la salida de compilación en la canalización. Puede empaquetar y publicar la aplicación en un paquete de Maven o en un archivo .war/jar que se va a implementar en una aplicación web.

Más información sobre cómo crear una canalización de CI/CD para el destino de implementación: