Problem
The two primary install paths ship different capabilities:
| Install path |
What you get |
jbang io.btrace:btrace (Maven Central) |
engine only — no extensions |
Distribution (SDKMAN / tar-zip / $BTRACE_HOME) |
engine + bundled default extensions in extensions/ |
Custom fat agent (fatAgentJar -PembedExtensions=… / Maven fat-agent goal) |
engine + chosen extensions, embedded |
Root cause: the published io.btrace:btrace masked JAR depends only on btrace-agent/btrace-client/btrace-compiler (btrace-dist/build.gradle:115-117), so it contains zero extension implementations and sets no BTrace-Embedded-Extensions manifest entry. Under jbang, BTRACE_HOME resolves to the ~/.m2/.../btrace-<version>.jar location, which has no sibling extensions/ dir — so both discovery paths (filesystem scan of $BTRACE_HOME/extensions/ and embedded-from-resources) come up empty (Main.java:418,426). Users get core tracing (probes, BTraceUtils, aggregations, profiling, JFR) but none of metrics/statsd/contracts/llm-trace/etc.
Decision
Publish a second, batteries-included artifact that embeds the default extensions, while keeping the lean io.btrace:btrace for users who want just the engine.
- Lean:
jbang io.btrace:btrace → engine only (unchanged).
- Batteries-included:
jbang io.btrace:btrace-all → engine + default extensions embedded. (artifact name btrace-all is a suggestion — confirm before implementing.)
Work
Depends on / relates to
Problem
The two primary install paths ship different capabilities:
jbang io.btrace:btrace(Maven Central)$BTRACE_HOME)extensions/fatAgentJar -PembedExtensions=…/ Mavenfat-agentgoal)Root cause: the published
io.btrace:btracemasked JAR depends only onbtrace-agent/btrace-client/btrace-compiler(btrace-dist/build.gradle:115-117), so it contains zero extension implementations and sets noBTrace-Embedded-Extensionsmanifest entry. Under jbang,BTRACE_HOMEresolves to the~/.m2/.../btrace-<version>.jarlocation, which has no siblingextensions/dir — so both discovery paths (filesystem scan of$BTRACE_HOME/extensions/and embedded-from-resources) come up empty (Main.java:418,426). Users get core tracing (probes,BTraceUtils, aggregations, profiling, JFR) but none of metrics/statsd/contracts/llm-trace/etc.Decision
Publish a second, batteries-included artifact that embeds the default extensions, while keeping the lean
io.btrace:btracefor users who want just the engine.jbang io.btrace:btrace→ engine only (unchanged).jbang io.btrace:btrace-all→ engine + default extensions embedded. (artifact namebtrace-allis a suggestion — confirm before implementing.)Work
btrace-allpublication tobtrace-distthat produces the fat agent with the default (allow-listed) extensions embedded — reuse the existingbtraceFatAgent/fatAgentJarmechanism (build.gradle:459+) withautoDiscoverlimited to the default set.release.ymlalongsideio.btrace:btrace(currently only:btrace-dist:publishAllPublicationsToSonatypeRepository→ the singlebtraceartifact).Depends on / relates to
btrace-ext-testfixture or the Spark/Hadoop examples.