Overslaan naar hoofdinhoud

webforJ build-plugin 26.01

Openen in ChatGPT

De webforJ build-plugin voert de bouwtijdtaken van webforJ uit als onderdeel van je Maven of Gradle build. Je voegt het één keer toe, en het bindt zijn doelen aan de fasen die je al uitvoert, zonder dat er een apart frontend-project nodig is om synchroon te houden. Het stuurt de frontend bundler, compileert de frontend, voert de frontend-tests uit, biedt de ontwikkelingswatch aan en voegt een hotswap-tool toe aan de app die het start.

Toevoegen van de plugin

Een webforJ-project dat is gemaakt vanuit een archetype heeft de plugin al. Om het aan een bestaand project toe te voegen:

De plugin declareren met <extensions>true</extensions> bindt zijn doelen aan de build zonder dat er uitvoeringsblokken hoeven te worden geschreven:

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

Doelen en taken

Drie doelen zijn gebonden aan fasen die je al uitvoert, zodat een normale mvn package of ./gradlew build een app produceert met de frontend erin gecompileerd, en de testfase voert de frontend-tests uit naast de Java-tests. De watch is degene die je handmatig tijdens de ontwikkeling start:

Maven-doelGradle-taakDraaitWat het doet
bundlewebforjBundleprepare-package, vóór elke jar en warCompileert de frontend voor de verpakte app
testwebforjTestmet de testfaseVoert de frontend-tests uit
cleanwebforjCleanFrontendmet de schoonmaakfaseVerwijdert de gegenereerde frontend
watchwebforjWatchhandmatig, naast de appHerbouwen bij wijzigingen tijdens de ontwikkeling
push-keyswebforjPushKeyshandmatig, eenmaal per implementatieGenereert het sleutelpair voor pushmeldingen en drukt de configuratielijnen af

Start de watch als het doel vóór degene die de app draait, bijvoorbeeld mvn compile webforj:watch spring-boot:run. Een archetype-project stelt dit in als het standaarddoel, zodat mvn alleen alles start. Het herlaadgewen gedrag wordt behandeld in Frontend watch.

Sla de frontend-tests over samen met de Java-tests, -DskipTests of -Dmaven.test.skip met Maven en -PskipTests met Gradle.

Opties

Stel opties in als Maven <configuration>-elementen, of als Gradle webforj { } extensiewaarden. Elke Maven-optie behalve plugins en hotswap accepteert ook een -D-eigenschap op de opdrachtregel. De twee buildtools spiegelen elkaar:

Maven-elementMaven-eigenschapGradleStandaardDoel
bunVersionwebforj.bundler.versionbunVersionbeheerdBevestig de Bun-versie voor reproduceerbare builds
bunPathwebforj.bundler.pathbunPathdownloadenGebruik een bestaande Bun-binaire in plaats van te downloaden
cacheDirwebforj.bundler.cacheDircacheDir${user.home}/.webforj/bunWaar beheerde Bun-binaries worden opgeslagen
sourceRootwebforj.bundler.sourceRootsourceRootsrc/main/frontendWaar de frontend-invoerlijnen zich bevinden
workDirwebforj.bundler.workDirworkDirtarget/bundleWaar de plugin zijn gegenereerde buildbestanden schrijft
pluginspluginsZet een extensie aan of uit op id, zoals webforj-tailwind
excludePackageswebforj.bundler.excludePackagesexcludePackagesPakketvoorkeuren om over te slaan tijdens de annotatiescan
eagerwebforj.bundler.eagereagerfalseLaad de hele frontend bij het starten van de app in plaats van per weergave, zie Eager bundle
testArgswebforj.bundler.testArgstestArgsExtra argumenten die aan de frontend-testloper worden doorgegeven
hotswaphotswapBevestig een klasse-updatetool aan de app die de build start, zie Hotswap

Bijvoorbeeld, om de Bun-versie vast te leggen en Tailwind in te schakelen:

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>