Maven Plugin & Lint
BLOGE ships two complementary build-time tools:
bloge-maven-pluginfor operator metadata exportbloge-lintfor static analysis of.blogefiles
Together they make DSL assets and operator catalogs easier to validate and visualize in CI.
In 0.9.8-RC1, the same plugin also exposes Preview verify and verify-reactor goals backed by bloge-verification. They execute business Scenarios; they are distinct from static DSL lint.
Maven plugin: export operator metadata
The Maven plugin scans compiled operator classes, infers or reads their schema, and generates operator-metadata.json for schema-aware tooling and automation.
Add the plugin
<plugin>
<groupId>com.leanowtech.bloge</groupId>
<artifactId>bloge-maven-plugin</artifactId>
<version>${bloge.version}</version>
<executions>
<execution>
<goals>
<goal>export-metadata</goal>
</goals>
</execution>
</executions>
</plugin>Run it manually
mvn bloge:export-metadataWhat it exports
The generated JSON includes:
- operator name and class name
- input and output Java types
- inferred or explicit input schema
- inferred or explicit output schema
- generation metadata
This file becomes a machine-readable operator catalog for schema-aware tools.
Lint CLI and Maven integration
bloge-lint performs static analysis on .bloge files.
CLI usage
java -jar bloge-lint.jar check path/to/file.bloge
java -jar bloge-lint.jar check src/main/resources/bloge/Common rules
| Rule | Description |
|---|---|
no-duplicate-node-id | Node ID declared more than once |
no-duplicate-schema-name | Schema name declared more than once |
no-unresolved-dependency | depends_on references a missing node |
no-unresolved-branch-target | Branch target references a missing node |
no-cycle | Graph contains a cycle |
missing-timeout | Node has no timeout configured |
missing-doc-comment | Node is missing documentation |
excessive-fan-out | Node has too many outgoing edges |
.blogerc.json
{
"rules": {
"missing-timeout": "warning",
"missing-doc-comment": "off"
}
}Recommended CI flow
A common workflow looks like this:
- compile operator classes
- run
bloge:export-metadata - run lint on committed
.blogeassets - run
bloge:verifywhen business-contract inputs and a test bootstrap are configured - publish metadata, verification artifacts, or repository outputs according to the selected gate
This keeps code-defined operators and externally authored DSL files aligned.
Preview verification goals
Compile test classes before loading the customer verification bootstrap:
mvn test-compile bloge:verifyFor the supported direct-module reactor aggregate:
mvn test-compile bloge:verify-reactorKeep the plugin version aligned through ${bloge.version}. A PASS from either goal is still separate from evidence trust and ClaimCapability; use the BLOGE Verify capability matrix before making it a release gate.
Using exported metadata
operator-metadata.json supports:
- operator catalog generation
- input/output contract inspection
- field completion and diagnostics
- automated documentation and compatibility checks
Practical guidance
- Generate metadata as part of your build, not as an afterthought.
- Treat lint failures as part of normal CI quality gates.
- Tune warning-level rules gradually as graph authoring discipline matures.
- Use metadata export to make operator contracts discoverable to non-runtime tooling.
Next steps
- Edit DSL safely with the VS Code Extension
- Explore schema contracts in Schema & I/O
- Configure business-contract execution in BLOGE Verify