Vermilingua is a Maven plugin for building WebObjects applications and frameworks.
It's close to a drop-in alternative to the WOLifecycle Maven
Plugin (with some differences listed below), but unlike wolifecycle it's written from scratch instead of being a wrapper around the old WOProject Ant Tasks. This means it performs faster builds and it's easier to improve the plugin and the build process.
vermilingua has been used for years to build dozens of applications and frameworks (including a fork of Wonder) and is under active development.
Replace the wolifecycle-maven-plugin <plugin> element in your
pom.xml with vermilingua-maven-plugin:
<plugin>
<groupId>is.rebbi</groupId>
<artifactId>vermilingua-maven-plugin</artifactId>
<version>1.1.7</version>
<extensions>true</extensions>
</plugin>
<configuration> parameterssrc/main/woresources.src/main/components.src/main/webserver-resources.true, vermilingua will generate an additional "WebServerResources" bundle for "split deployments".true, vermilingua will generate compressed archives of the build products (application bundle, and "WebServerResources" bundle if created) using tar and gzip.wolifecycle-maven-plugin.war files (servlet deployment)..framework bundles. We only build Maven-style JAR frameworks.flattenResources configuration parameter..patternset files. The build relies entirely on using a standard folder structure.flattenComponents is not required. Any folder structure in src/main/components is flattened since WO can't locate components in subfolders when deployed.NEXT_ROOT
environment variable and thus no longer passes the derived -DWORootDirectory
or -DWOLocalRootDirectory parameters to the JVM. Since applications are now
self-contained bundles, there's no need for a system-wide WebObjects installation.src/main/woresources instead of src/main/resources (which is
now reserved for Java classpath resources As God Intended).${build.finalName} (set in the POM)
will only affect the name of the WOA folder. The insides of two WOAs
made from the same project, but compiled with different
finalNames, will look exactly the same.jdb. If you need to run your application using jdb you can use launch.jvm=jdb.jvmOptions includes by default the --add-opens clauses required to run WO applications on modern JDKs.performSplit and createArchives configuration parameters.Vermilingua builds simpler bundles than wolifecycle. Platform-specific logic and files have been eliminated and the built bundle is simply:
📁 MyApp.woa
📄 MyApp
📄 config.txt
📄 classpath.txt
📁 Contents
📄 Info.plist
📁 WebServerResources
📁 Frameworks
📁 SomeFramework.framework
📁 WebServerResources
📁 Resources
📁 Java
📄 myapp.jar
📄 ... [other jars/dependencies]
If deploying on Windows, you can use the standard launch script via WSL or Git Bash.
config.txt contains the configuration parameters jvm and jvmOptions. By default, they contain the same values wolifecycle used, but can also be set:
build.properties using launch.jvm=somethingmvn package -Dlaunch.jvm=something./MyApp -launch.jvm=somethingThis is nice when:
launch.jvmOptions.While we prefer and encourage use of the standard maven project layout, vermilingua can build "Fluffy Bunny" layout projects with sources in Sources/, Resources/, Components/ and WebServerResources/. To do this, configure the plugin with the location of your resource directories and and set Maven's <sourceDirectory> to Sources:
<build>
<sourceDirectory>Sources</sourceDirectory>
<plugins>
<plugin>
<groupId>is.rebbi</groupId>
<artifactId>vermilingua-maven-plugin</artifactId>
<version>1.1.7</version>
<extensions>true</extensions>
<configuration>
<woresourcesPath>Resources</woresourcesPath>
<componentsPath>Components</componentsPath>
<webserverResourcesPath>WebServerResources</webserverResourcesPath>
</configuration>
</plugin>
</plugins>
</build>