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
Consumirlo desde GitHub Packages
GitHub Packages para Maven requiere autenticacion tambien para paquetes publicos. Para consumir el arquetipo remoto:
-
crea un token classic con
read:packages -
exporta
GITHUB_PACKAGES_TOKEN -
configura
~/.m2/settings.xmlcon el repositoriohttps://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~@localy@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 |
|---|---|
|
Incluye o excluye el modulo |
|
Version de Karate del proyecto generado. |
|
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.xmldel modulo solo dentro del job -
valida la generacion del arquetipo desde el catalogo local
-
publica el artefacto en GitHub Packages