Saltar al contenido principal

Plugin de construcción de webforJ 26.01

Abrir en ChatGPT

El plugin de construcción de webforJ ejecuta el trabajo de tiempo de construcción de webforJ como parte de tu construcción de Maven o Gradle. Lo agregas una vez y vincula sus objetivos a las fases que ya ejecutas, sin un proyecto frontend separado que mantener sincronizado. Controla el agregador de frontend, compilando el frontend, ejecutando las pruebas del frontend, sirviendo la vigilancia de desarrollo y adjuntando una herramienta de intercambio en caliente a la aplicación que inicia.

Agregar el plugin

Un proyecto de webforJ creado a partir de un arquetipo ya tiene el plugin. Para agregarlo a un proyecto existente:

Declarar el plugin con <extensions>true</extensions> vincula sus objetivos a la construcción sin bloques de ejecución que escribir:

pom.xml
<plugin>
<groupId>com.webforj</groupId>
<artifactId>webforj-maven-plugin</artifactId>
<extensions>true</extensions>
</plugin>

Objetivos y tareas

Tres objetivos se vinculan a las fases que ya ejecutas, por lo que un mvn package normal o ./gradlew build produce una aplicación con su frontend compilado, y la fase de prueba ejecuta las pruebas del frontend junto con las pruebas de Java. La vigilancia es la que inicias manualmente durante el desarrollo:

Objetivo de MavenTarea de GradleSe ejecutaLo que hace
bundlewebforjBundleprepare-package, antes de cada jar y warCompila el frontend para la aplicación empaquetada
testwebforjTestcon la fase de pruebaEjecuta las pruebas del frontend
cleanwebforjCleanFrontendcon la fase de limpiezaElimina el frontend generado
watchwebforjWatchmanualmente, junto con la aplicaciónReconstruye en cambio durante el desarrollo
push-keyswebforjPushKeysmanualmente, una vez por implementaciónGenera el par de claves para notificaciones push e imprime las líneas de configuración

Inicia la vigilancia como el objetivo anterior al que ejecuta la aplicación, mvn compile webforj:watch spring-boot:run, por ejemplo. Un proyecto arquetipo establece esto como el objetivo predeterminado, por lo que mvn solo inicia todo. Su comportamiento de recarga se cubre en Vigilancia de frontend.

Omitir las pruebas del frontend junto con las pruebas de Java, -DskipTests o -Dmaven.test.skip con Maven y -PskipTests con Gradle.

Opciones

Establece opciones como elementos <configuration> de Maven, o como valores de extensión webforj { } de Gradle. Cada opción de Maven excepto plugins y hotswap también acepta una propiedad -D en la línea de comandos. Las dos herramientas de construcción se reflejan entre sí:

Elemento de MavenPropiedad de MavenGradlePredeterminadoPropósito
bunVersionwebforj.bundler.versionbunVersiongestionadoFija la versión de Bun para construcciones reproducibles
bunPathwebforj.bundler.pathbunPathdescargarUsa un binario de Bun existente en lugar de descargar
cacheDirwebforj.bundler.cacheDircacheDir${user.home}/.webforj/bunDónde se almacenan los binarios de Bun gestionados
sourceRootwebforj.bundler.sourceRootsourceRootsrc/main/frontendDónde viven las fuentes de entrada del frontend
workDirwebforj.bundler.workDirworkDirtarget/bundleDónde el plugin escribe sus archivos de construcción generados
pluginspluginsActiva o desactiva una extensión por id, como webforj-tailwind
excludePackageswebforj.bundler.excludePackagesexcludePackagesPrefijos de paquete para omitir durante el escaneo de anotaciones
eagerwebforj.bundler.eagereagerfalseCarga todo el frontend al inicio de la aplicación en lugar de por vista, ver Paquete ansioso
testArgswebforj.bundler.testArgstestArgsArgumentos adicionales pasados al ejecutor de pruebas del frontend
hotswaphotswapAdjunta una herramienta de actualización de clases a la aplicación que inicia la construcción, ver Intercambio en caliente

Por ejemplo, para fijar la versión de Bun y activar Tailwind:

pom.xml
<plugin>
<groupId>com.webforj</groupId>
<artifactId>webforj-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<bunVersion>1.3.0</bunVersion>
<plugins>
<webforj-tailwind>true</webforj-tailwind>
</plugins>
</configuration>
</plugin>