[RUN-3345] Stop bundling a duplicate slf4j-api in the plugin lib - #157
Merged
Conversation
sshj (and its transitive dep asn-one) resolve org.slf4j:slf4j-api to 2.0.17, and since pluginLibs resolves transitively, that jar was getting copied into the plugin's bundled lib/ and added to its runtime classpath alongside Rundeck's own slf4j-api + log4j binding. The host's log4j-slf4j-impl only implements the legacy 1.7.x-style binding (org.slf4j.impl.StaticLoggerBinder), not the 2.x provider SPI, so when the plugin's bundled 2.x slf4j-api initializes it finds no compatible provider and falls back to a NOP logger, printing the 'No SLF4J providers were found' warning on every job execution. Excluding the transitive slf4j-api from sshj/asn-one keeps the plugin from shipping a second copy at all, so it defers to whatever slf4j-api the host already has wired up correctly. Fixes #70
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
ltamaster
approved these changes
Aug 20, 2026
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.
What
sshj(and its transitive dependencyasn-one) resolveorg.slf4j:slf4j-apito2.0.17. BecausepluginLibsresolves transitively, that jar was getting copied into the plugin's bundledlib/and added to its runtime classpath alongside Rundeck's ownslf4j-api+ log4j binding.Rundeck's host
log4j-slf4j-implonly implements the legacy 1.7.x-style binding (org.slf4j.impl.StaticLoggerBinder), not the SLF4J 2.x provider SPI. So when the plugin's bundled 2.xslf4j-apiinitializes, it finds no compatible provider and falls back to a NOP logger — printing theNo SLF4J providers were foundwarning on every job execution.This excludes the transitive
slf4j-apifromsshj/asn-oneinpluginLibs, so the plugin no longer ships a second copy at all and just defers to whateverslf4j-apithe host already has wired up correctly.Customer impact
Fixes a cosmetic-but-persistent warning that's been reported against Rundeck 5.9 through 6.0 by multiple users on #70 — jobs succeed, but every execution prints an alarming-looking SLF4J error block in the output.
How to test
./gradlew clean build— confirmed passing locally.lib/—slf4j-apiis no longer bundled (verified locally; previouslyslf4j-api-2.0.17.jarwas present).SLF4J(W): No SLF4J providers were foundblock should no longer appear in job output.Fixes #70
This is tracked internally.