{"meta":{"title":"Creación y prueba de Java con Maven","intro":"Aprenda a crear un flujo de trabajo de integración continua (CI) en GitHub Actions para compilar y probar el proyecto de Java con Maven.","product":"GitHub Actions","breadcrumbs":[{"href":"/es/actions","title":"GitHub Actions"},{"href":"/es/actions/tutorials","title":"Tutoriales"},{"href":"/es/actions/tutorials/build-and-test-code","title":"Crea y prueba tu código"},{"href":"/es/actions/tutorials/build-and-test-code/java-with-maven","title":"Java con Maven"}],"documentType":"article"},"body":"# Creación y prueba de Java con Maven\n\nAprenda a crear un flujo de trabajo de integración continua (CI) en GitHub Actions para compilar y probar el proyecto de Java con Maven.\n\n## Introducción\n\nEn esta guía se muestra cómo crear un flujo de trabajo que realice la integración continua (CI) para el proyecto de Java mediante la herramienta de administración de proyectos de software de Maven. El flujo de trabajo que creas te permitirá ver cuándo las confirmaciones de una solicitud de extracción causan la construcción o las fallas de prueba en tu rama por defecto; este enfoque puede ayudar a garantizar que tu código siempre sea correcto. Puede ampliar su flujo de trabajo de CI para almacenar en caché archivos y subir artefactos desde una ejecución de flujo de trabajo.\n\nLos ejecutores hospedados en GitHub tienen un caché de herramientas con software pre-instalado, lo cual incluye los Kits de Desarrollo Java (JDK) y Maven. Para obtener una lista del software y las versiones preinstaladas para JDK y Maven, consulta [Ejecutores hospedados en GitHub](/es/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).\n\n## Requisitos previos\n\nDeberías estar familiarizado con YAML y la sintaxis para las GitHub Actions. Para más información, vea:\n\n* [Sintaxis del flujo de trabajo para GitHub Actions](/es/actions/using-workflows/workflow-syntax-for-github-actions)\n* [Escritura de flujos de trabajo](/es/actions/learn-github-actions)\n\nSe recomienda tener conocimientos básicos sobre Java y el marco de Maven. Para más información, vea la [Guía de introducción a Maven](https://maven.apache.org/guides/getting-started/index.html) en la documentación de Maven.\n\n## Uso de una plantilla de flujo de trabajo de Maven\n\nPara comenzar rápidamente, agregue una plantilla de flujo de trabajo al directorio `.github/workflows` del repositorio.\n\nGitHub proporciona una plantilla de flujo de trabajo para Maven que debería funcionar con la mayoría de los proyectos de Java con Maven. En las secciones siguientes de esta guía se proporcionan ejemplos de cómo puede personalizar esta plantilla de flujo de trabajo.\n\n1. En GitHub, navegue hasta la página principal del repositorio.\n\n2. En el nombre del repositorio, haz clic en **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Captura de pantalla de las pestañas del repositorio \"github/docs\". La pestaña \"Proyectos\" aparece resaltada con un contorno naranja.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Si ya tiene un flujo de trabajo en su repositorio, haga clic en **New workflow** (Nuevo flujo de trabajo).\n\n4. En la página \"Elegir un flujo de trabajo\" se muestra una selección de plantillas de flujo de trabajo recomendadas. Busque \"Java con Maven\".\n\n5. En el flujo de trabajo \"Java con Maven\", haga clic en **Configure**.\n\n6. Edita el flujo de trabajo según sea necesario. Por ejemplo, cambie la versión de Java.\n\n7. Haga clic en **Commit changes** (Confirmar cambios).\n\nEl archivo de flujo de trabajo `maven.yml` se agrega al directorio `.github/workflows` de tu repositorio.\n\n### Especificar la versión y la arquitectura de Java\n\nLa plantilla de flujo de trabajo configura `PATH` a fin de que contenga OpenJDK 8 para la plataforma x64. Si quieres usar una versión diferente de Java o tener como destino una arquitectura diferente (`x64` o `x86`), puedes usar la acción `setup-java` para elegir un entorno de ejecución de Java diferente.\n\nPor ejemplo, para usar la versión 11 del JDK proporcionado por Adoptium para la plataforma x64, puedes usar la acción `setup-java` y configurar los parámetros `java-version`, `distribution` y `architecture` en `'11'``'temurin'` y `x64`.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - name: Set up JDK 11 for x64\n    uses: actions/setup-java@v4\n    with:\n      java-version: '11'\n      distribution: 'temurin'\n      architecture: x64\n```\n\nPara obtener más información, consulta la acción [`setup-java`](https://github.com/actions/setup-java).\n\n## Construir y probar tu código\n\nPuedes usar los mismos comandos que usas de forma local para construir y probar tu código.\n\nLa plantilla de flujo de trabajo ejecutará el destino `package` de manera predeterminada. En la configuración predeterminada de Maven, este comando descargará dependencias, construirá clases, ejecutará pruebas y empaquetará las clases en su formato distribuible, por ejemplo, un archivo JAR.\n\nSi usas diferentes comandos para compilar tu proyecto, o si quieres usar un destino diferente, puedes especificarlos. Por ejemplo, puede que quiera ejecutar el destino `verify` configurado en un archivo `pom-ci.xml`.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n  - name: Run the Maven verify phase\n    run: mvn --batch-mode --update-snapshots verify\n```\n\n## Almacenar dependencias en caché\n\nPuedes almacenar en caché tus dependencias para acelerar tus ejecuciones de flujo de trabajo. Después de una ejecución correcta, el repositorio de Maven local se almacenará en una memoria caché. En las ejecuciones de flujo de trabajo futuras, el caché se restaurará para que las dependencias no necesiten descargarse desde los repositorios remotos de Maven. Puede almacenar en caché las dependencias simplemente mediante la [acción `setup-java`](https://github.com/marketplace/actions/setup-java-jdk), o bien puede usar la [acción `cache`](https://github.com/actions/cache) para la configuración personalizada y más avanzada.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - name: Set up JDK 17\n    uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n      cache: maven\n  - name: Build with Maven\n    run: mvn --batch-mode --update-snapshots verify\n```\n\nEste flujo de trabajo guardará los contenidos del repositorio local de Maven, ubicado en el directorio `.m2` del directorio principal del ejecutor. La clave de caché será el contenido con hash de `pom.xml`, por lo que los cambios en `pom.xml` invalidarán la caché.\n\n## Empaquetar datos de flujo de trabajo como artefactos\n\nUna vez que la compilación se haya realizado correctamente y se hayan superado las pruebas, es posible que quiera cargar los paquetes de Java resultantes como un artefacto de compilación. Esto almacenará los paquetes compilados como parte de la ejecución del flujo de trabajo y te permitirá descargarlos. Los artefactos pueden ayudarte a probar y depurar solicitudes de extracción en tu entorno local antes de que se fusionen. Para más información, consulta [Almacenamiento y uso compartido de datos con artefactos de flujo de trabajo](/es/actions/using-workflows/storing-workflow-data-as-artifacts).\n\nMaven normalmente creará archivos de salida como JAR, EAR o WAR en el directorio `target`. Para cargarlos como artefactos, puedes copiarlos en un nuevo directorio que contenga artefactos para cargar. Por ejemplo, puede crear un directorio denominado `staging`. Después, puede cargar el contenido de ese directorio mediante la acción `upload-artifact`.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n  - run: mvn --batch-mode --update-snapshots verify\n  - run: mkdir staging && cp target/*.jar staging\n  - uses: actions/upload-artifact@v4\n    with:\n      name: Package\n      path: staging\n```"}