build: narrow flexmark-all to targeted modules + jcl-over-slf4j bridge (F3)#108
Merged
Merged
Conversation
…e (F3) GraphCompose's only flexmark consumer is `MarkDownParser`, which references the core parser + AST, `util.ast.Node`/`NodeVisitor`/ `VisitHandler`, and `util.data.MutableDataSet`. The full `flexmark-all` aggregator pulled ~40 jars of extensions, formatters, and converters that the codebase never touches. - Replace `flexmark-all` with the three modules actually used: `flexmark` (core), `flexmark-util-ast`, `flexmark-util-data`. - Add `jcl-over-slf4j` as an explicit compile dep. PDFBox 3.0.7's `PDDocument.<clinit>` still calls `org.apache.commons.logging. LogFactory` directly; we exclude PDFBox's own commons-logging to keep a single logging facade, but the bridge was previously provided transitively via `flexmark-all`. Without it the classpath now misses LogFactory and every PDDocument-touching test fails with `NoClassDefFoundError` at clinit. The bridge routes those calls through SLF4J, which is the library's chosen logging facade. Consumer impact: callers that depended on flexmark extensions (`flexmark-ext-tables`, gfm-strikethrough, footnotes, etc.) flowing through GraphCompose must declare those modules explicitly. Gates: 1031 tests pass; dependency:tree no longer lists `flexmark-all`; japicmp vs v1.6.6 reports semver OK.
a594a10 to
a14709b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues the v1.6.7 dependency-cleanup cycle. Implements track
F3 from the readiness taskboard using the
F1 audit as input.
What changed
flexmark consumer is
com.demcha.compose.engine.text.markdown.MarkDownParser,which references core parser + AST classes,
util.ast.Node/NodeVisitor/VisitHandler, andutil.data.MutableDataSet.The aggregator pulled ~40 jars (extensions, formatters,
converters) the codebase never touches. Replaced with
flexmark(core),flexmark-util-ast,flexmark-util-data.jcl-over-slf4jadded explicitly. Fixing F3 surfaced alatent gap: PDFBox 3.0.7's
PDDocument.<clinit>still callsorg.apache.commons.logging.LogFactorydirectly. Weintentionally exclude PDFBox's own
commons-loggingartefact(single logging facade — SLF4J), but the bridge was provided
transitively via
flexmark-all. Without it, everyPDDocument-touching test now fails with
NoClassDefFoundErrorat clinit. The standard SLF4J bridge fixes it cleanly.
Consumer impact
Callers that depended on flexmark extensions (
flexmark-ext-tables,gfm-strikethrough, footnotes, …) flowing transitively through
GraphCompose must depend on those modules explicitly. Logging
behaviour is unchanged for consumers — SLF4J was already the
project's logging facade.
Test plan
./mvnw test -pl .— 1031 tests, 0 failures, 0 errors./mvnw dependency:tree -pl .—flexmark-allremoved; 3direct flexmark modules + 8 transitive
util-*(vs ~40 fromthe aggregator);
jcl-over-slf4jpresent; PDFBox'scommons-loggingexcluded as before../mvnw verify -pl . -P japicmp— semver OK vs v1.6.6.