Skip to content

Building

Maven Profiles

The build uses Maven profiles to select editions, packaging targets, and build options. Profiles are layered across three levels: the root pom.xml sets J2CL and environment properties, op/pom.xml activates modules, and op/console/pom.xml runs the appropriate Vite build and assembly.

Edition Profiles

ProfilePurpose
opActivates the op/ module tree (halOP edition)
osActivates the os/ module tree (halOS edition — not yet implemented)

Packaging Profiles

Each packaging profile requires op as a prerequisite. They are mutually exclusive for local development.

ProfilePurposeJ2CL Compilation
standaloneBuilds the Quarkus standalone editionADVANCED (production)
feature-packBuilds the Galleon feature pack and the WildFly subsystemADVANCED (production)
test-suiteBuilds the test-suite edition for daveBUNDLE_JAR (development)

Modifier Profiles

These can be combined with the profiles above.

ProfilePurpose
formatAuto-formats source files (editorconfig, import sort, license headers)
checkValidates source files (enforcer, editorconfig, import sort, license, checkstyle)
nativeGraalVM native image build (use with -P op,standalone,native)
jbangUber-JAR packaging for JBang execution (use with -P op,standalone,jbang)
quick-buildSkips tests and npm (also activatable via -Dquickly)
releaseSource/Javadoc JARs, GPG signing, Maven Central publishing

Common Combinations

bash
mvn verify                                  # Code modules only (no edition)
mvn compile -P op                           # Compile halOP
mvn install -P op,standalone                # Standalone edition (JVM)
mvn install -P op,standalone,native         # Standalone edition (native binary)
mvn install -P op,feature-pack              # Galleon feature pack
mvn package -P op,test-suite                # Test suite container
mvn install -P quick-build                  # Fast build, skip tests
mvn process-sources -P format,op            # Auto-format halOP sources
mvn process-sources -P check,op             # Validate halOP sources

Scripts

ScriptPurpose
format.shAuto-format source files (license headers, editorconfig, import sorting) using the format Maven profile
check.shValidate source files (enforcer, checkstyle, license headers, editorconfig, import sorting) using the check Maven profile
bump-pfj.shBump PatternFly Java to a new version (Maven property, pnpm catalog, lockfile)
versionBump.shBump the project version in Maven POMs
release.shCreate a new release (version bump, changelog, tag, push, snapshot bump)
unrelease.shUndo a failed release (delete tag, revert version bump)

Documentation for the HAL management console (halOP & halOS)