Maven build logs often consume far more coding-agent context than the actual failure. mvn-lite keeps normal Maven command syntax and exit behavior while providing compact output for common build and verification workflows.
Public, standalone utilities live under scripts/. Repository release tooling lives
separately under maintainers/ and is not part of the public utility interface.
Introverted Maven for coding agents.
mvn-lite is optimized for build, test, package, install, and verification commands. Use --full for reporting goals or whenever ordinary Maven output is needed.
Real-project results:
- Finrecord compatibility experiment: successful output fell from 6,753 to 16 bytes—more than 99.7%.
- Scriptella ETL smoke test: a successful JDK 17 reactor test fell from hundreds of lines to one.
It stays close to Maven:
- It operates in the caller's current working directory, regardless of where the script is installed.
- It prefers that directory's executable
./mvnw, then falls back tomvnfromPATH. - It accepts ordinary Maven arguments and preserves their order and boundaries.
- Compact mode adds
-B,-ntp, and-Dstyle.color=neverwhen an equivalent option was not supplied. - It prints a small success result and conservatively extracts common compiler, test, dependency, plugin-goal, and Maven command failures.
- It retains complete failure logs and returns Maven's exit status unchanged.
A successful compact run looks like:
PASS · 4.2 s
A representative failure looks like this; actual extraction depends on Maven and plugin output:
FAIL
Failure summary:
Test: com.example.AppTest.shouldRejectInvalidInput
Exception: java.lang.AssertionError: expected 400
Full Maven log:
/project/.agent-logs/maven/maven-20260730-100000-12345.log.a1B2c3
Re-run with --full for complete live output.
A standard plugin failure with a clear same-line cause can include:
Goal: org.example:example-plugin:1.0:run (default)
Cause: Generated output directory is not writable
For shared projects, install a pinned version at the project root:
curl -fsSL \
https://raw.githubusercontent.com/ejboy/agent-scripts/v0.1.0/scripts/mvn-lite \
-o mvn-lite
chmod +x mvn-lite
./mvn-lite testCommit mvn-lite and add .agent-logs/ to .gitignore.
For personal use across projects, install it on PATH instead:
mkdir -p ~/.local/bin
curl -fsSL \
https://raw.githubusercontent.com/ejboy/agent-scripts/v0.1.0/scripts/mvn-lite \
-o ~/.local/bin/mvn-lite
chmod +x ~/.local/bin/mvn-liteRepositories that group utilities under scripts/ may use ./scripts/mvn-lite.
./mvn-lite clean verify
./mvn-lite -pl app -am test
./mvn-lite --full dependency:tree
./mvn-lite --keep-log verify
./mvn-lite --help-mvn-liteThe wrapper options are:
--full: ordinary live Maven output.--raw: alias for--full.--keep-log: retain the log after a successful compact run.--help-mvn-lite: show the wrapper version, usage, and wrapper options.
Maven informational options such as --help and --version continue to pass
through to Maven.
Wrapper options must appear before Maven arguments. Use -- to end wrapper-option parsing explicitly.
Maven's informational flags always pass through with ordinary output and unchanged arguments:
-h
--help
-v
--version
-V
--show-version
Compact mode is designed primarily for builds and tests. Reporting and inspection goals such as dependency:tree, help:effective-pom, and help:active-profiles may need --full.
Summaries are deterministic and conservative. Unsupported formats fall back to at most 80 lines from the Maven log. The wrapper does not inspect the POM, classify every Maven plugin, reconstruct test counts, or call an AI service.
Compact-mode failure logs remain under .agent-logs/maven/ in the current project. Successful logs are deleted unless --keep-log is supplied. Set MVN_LITE_LOG_DIR to use another destination. Retained raw logs are authoritative, and projects adopting mvn-lite should ignore .agent-logs/.
A project may optionally define its own ./scripts/build wrapper for project-specific verification policy, but that vocabulary belongs in the application repository rather than here.
scripts/launch-browser is a separate macOS utility for starting Google Chrome with DevTools enabled at http://127.0.0.1:9222. It defaults to detached headless mode.
./scripts/launch-browser
./scripts/launch-browser --visible
./scripts/launch-browser --foreground --isolated
./scripts/launch-browser --stop
./scripts/launch-browser --helpSuccessful detached launches record their service label and PID in ~/.browser-testing-profile/launch-state, alongside the existing persistent browser profile. --stop validates that the recorded service uses the xyz.pvrlabs.browser.* prefix, asks launchctl to stop it, and verifies that both the recorded PID and DevTools endpoint have stopped before removing state. If the recorded PID still owns port 9222 after service removal, the script terminates that process directly. It never kills an arbitrary process merely because it uses port 9222.
The temporary launch log is removed when Chrome exits normally; abnormal-exit logs remain available for diagnostics.
The root VERSION is the canonical release version. Public scripts embed that
version so copied files retain their identity and provenance. Maintainers can update
all registered scripts and run validation with:
./maintainers/bump-version 0.2.0The maintainer command updates files and shows the resulting diff; it does not commit or tag the release.
This is an experimental, small utility collection. mvn-lite is not a complete Maven replacement, and this repository is not a build system, browser automation framework, AI agent, or task runner.
MIT licensed; see LICENSE.