For the last few years I've been using the vermilingua maven plugin to build my WO apps and frameworks. It's a plugin I've been working on with the help of our beloved Paul (Hoadley) and it's gotten some attention and lovin' in the last few months, making this the perfect time to start openly mentioning and even recommending it.
Initially I really just wanted to fix a couple of things in the wolifecycle plugin, but I soon decided writing a new plugin might be easier — and a little liberating, since it meant more freedom to change things. wolifecycle is a wrapper around the old woproject-ant-tasks which makes it more of an effort to modify, improve and extend, and like a lot of WO and Wonder it carries quite a bit of legacy baggage to accommodate old projects and practices. That's great for those who need that, but since vermilingua is a separate plugin we're free to focus on simplicity and modern, standard projects and be a bit more aggressive with changes. Using plain java also means vermilingua performs builds quite a bit faster.
vermilingua has some changes and improvements compared to wolifecycle. Below are a few I feel worth mentioning, the full list of features and differences can be found in the project's README. There are also always new features and fixes being planned and pondered, these can usually be found in the project's github issues.
NEXT_ROOTSince applications are self-contained bundles that don't need a system-wide WO installation, vermilingua's launch script no longer requires or reads the NEXT_ROOT environment variable. This makes the built apps environment independent, removing a step from WO deployment setup.
By default, vermilingua assumes source projects keep WO bundle resources in src/main/woresources rather than src/main/resources. This creates a clean separation between WO resources and java classpath resources, a separation I can't imagine why wasn't there to begin with.
If you prefer src/main/resources you can configure vermilingua to use that folder, see the project's README for configuration specifics. But I don't think you should.
The woa's config.txt contains configuration for launching the application, currently having only the familiar parameters java, jvmOptions and principalClass. These are more or less the same found in a traditional .woa built by wolifecycle but vermilingua provides more options for setting them:
build.properties. Example: launch.java=/opt/jdk-26/bin/javamvn package -Dlaunch.java=/opt/jdk-26/bin/java./MyApp -launch.java=/opt/jdk-26/bin/javaThis is nice when you need to switch between java installations/versions, or if you need to add JVM arguments (in which case you'd do the same, but setting the launch.jvmOptions property).
vermilingua is not WO specific. It can build any generic java project and package it as a .woa, making it perfect for building ng-objects projects which are generic java projects by nature.
Vermilingua generates simpler bundles than wolifecycle. We've removed a lot of redundant, outdated platform-specific files and logic (Rhapsody, Windows, MacOS) making the launch script generic/platform-independent and the built bundle simply:
📁 MyApp.woa
📄 MyApp
📄 config.txt
📄 classpath.txt
📁 Contents
📄 Info.plist
📁 WebServerResources
📁 Frameworks
📁 SomeFramework.framework
📁 WebServerResources
📁 Resources
📁 Java
📄 myapp.jar
📄 ... [other jars/dependencies]
Sure. If you're maven only and not building .war files for servlet deployment. Try it. If it doesn't work or seems to be missing something you need, let me know, either on the WOCommunity chat (where I always am) or the WOCommunity mailinglist. Or file an issue on the github repo.
| ⚙️️ wonder-slim-deployment | Sort keys on serialization | Apr 28 |
| ⚙️️ wonder-slim-deployment | Update junit v5.11.3 -> v6.0.3 | Apr 28 |
| ⚙️️ wonder-slim-deployment | Remove wotaskd's direct dependencies on JavaFoundation / JavaWebObjects | Apr 28 |
| ⚙️️ wonder-slim-deployment | Removed 'WOAllowRapidTurnaround=false' from Monitor's Properties | Apr 28 |
| ⚙️️ wonder-slim-deployment | Switch CoderWrapper to delegate to FoundationCoder | Apr 28 |
| 🤸♀️ wonder-slim | Log direct connect url at application startup in dev mode | Apr 28 |
| ⚙️️ wonder-slim-deployment | Add FoundationCoder, a Foundation-free replacement for _JavaMonitorCo… | Apr 28 |
| 🌶 cayenne | Modeler Cleanup ... | Apr 28 |
| 🌶 cayenne | Modeler Cleanup ... | Apr 28 |
| 🌶 cayenne | Modeler Cleanup ... | Apr 27 |