Arquetipo Maven

El arquetipo code/archetype-karate-e2e genera proyectos alineados con el estado actual del repositorio: Java 21, Karate 2.0.2, runner JUnit Platform, soporte APP_PORT para @local y workflow de CI de base.

Coordenadas publicas previstas:

  • io.github.jonisf87.archetypes:archetype-karate-e2e

Instalar el arquetipo localmente

mvn -f code/archetype-karate-e2e/pom.xml clean install

Consumirlo desde GitHub Packages

GitHub Packages para Maven requiere autenticacion tambien para paquetes publicos. Para consumir el arquetipo remoto:

  1. crea un token classic con read:packages

  2. exporta GITHUB_PACKAGES_TOKEN

  3. configura ~/.m2/settings.xml con el repositorio https://maven.pkg.github.com/jonisf87/fwk-karateautomulti

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <activeProfiles>
    <activeProfile>github-archetype</activeProfile>
  </activeProfiles>
  <profiles>
    <profile>
      <id>github-archetype</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>https://repo.maven.apache.org/maven2</url>
        </repository>
        <repository>
          <id>github</id>
          <url>https://maven.pkg.github.com/jonisf87/fwk-karateautomulti</url>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <servers>
    <server>
      <id>github</id>
      <username>jonisf87</username>
      <password>${env.GITHUB_PACKAGES_TOKEN}</password>
    </server>
  </servers>
</settings>

Generar un proyecto solo con E2E

mvn archetype:generate \
  -DarchetypeGroupId=io.github.jonisf87.archetypes \
  -DarchetypeArtifactId=archetype-karate-e2e \
  -DarchetypeVersion=1.0.0-SNAPSHOT \
  -DgroupId=com.acme \
  -DartifactId=demo-e2e-no-micro \
  -Dversion=1.0.0-SNAPSHOT \
  -Dpackage=com.acme.demo \
  -DincludeCodeModule=false \
  -DinteractiveMode=false

Este modo deja un proyecto centrado en e2e/karate, con un feature offline como base de arranque.

Generar un proyecto con microservicio demo

mvn archetype:generate \
  -DarchetypeGroupId=io.github.jonisf87.archetypes \
  -DarchetypeArtifactId=archetype-karate-e2e \
  -DarchetypeVersion=1.0.0 \
  -DgroupId=com.acme \
  -DartifactId=demo-e2e-con-micro \
  -Dversion=1.0.0-SNAPSHOT \
  -Dpackage=com.acme.demo \
  -DincludeCodeModule=true \
  -DinteractiveMode=false

El proyecto generado incluye:

  • parent Maven multi-modulo

  • code/ con el endpoint /products

  • e2e/karate/ con suite lista para ~@local y @local

  • .github/workflows/ci.yml

  • .gitignore

Flujo recomendado tras generar

cd demo-e2e-con-micro
mvn -pl code clean verify
mvn -pl e2e/karate clean verify '-Dkarate.options=--tags ~@local'

Para probar @local, levanta el servicio y exporta APP_PORT si usas un puerto distinto.

Parametros clave

Parametro Uso

includeCodeModule

Incluye o excluye el modulo code/.

karateVersion

Version de Karate del proyecto generado.

groupId, artifactId, version, package

Coordenadas Maven y package base del nuevo proyecto.

Validacion aplicada en este repositorio

El arquetipo se ha validado generando un proyecto real con includeCodeModule=true, ejecutando code/, la suite ~@local y el flujo @local contra un servicio demo levantado en un puerto distinto de 8080.

Flujo de release

La publicacion remota del arquetipo se realiza con tags vX.Y.Z mediante .github/workflows/publish-archetype.yml. El workflow:

  • toma la version desde el tag

  • ajusta el pom.xml del modulo solo dentro del job

  • valida la generacion del arquetipo desde el catalogo local

  • publica el artefacto en GitHub Packages