fix(deps): pin Shiro to Java 8-compatible line (1.13.0) - #80
Merged
Conversation
Switches all org.apache.shiro:shiro-* artifacts from the 2.x line to
1.13.0, the last Java 1.8 compatible release (1.x is EOL but the
2.0.0 release dropped Java 8 support). 1.13.0 ships Java 8 bytecode
(major version 52) and the shiro.* API surface is unchanged for the
ways this project uses it (web auth + JEE filter chain).
Why not just one direct version pin?
- 1.13.0 also pulls in shiro-cache and shiro-crypto-core transitively
from shiro-core, and the spring/config/lang/crypto/event artifacts
each have their own release line. Pinning shiro-core in
dependencyManagement is not enough on its own; some modules
resolved 2.1.0 for transitive artifacts (e.g. shiro-lang in
shindig-uber) before this fix. The 9 dependencyManagement entries
+ the shiro.version property pin the whole shiro-* family in
lockstep.
Touched files (artifact ID / version only, no code changes):
- pom.xml (root):
+ <shiro.version>1.13.0</shiro.version> in <properties>
+ 9 <dependencyManagement> entries: shiro-core, shiro-web,
shiro-spring, shiro-lang, shiro-event, shiro-config-core,
shiro-config-ogdl, shiro-crypto-hash, shiro-crypto-cipher
- modules/shindig-uber/pom.xml:
~ <version>2.1.0</version> -> <version>${shiro.version}</version>
on the only direct shiro-web declaration
Verification:
- ./mvn-env.sh clean install -DskipTests: BUILD SUCCESS (3:56)
- javap -v on every resolved shiro-*-1.13.0.jar: major version 52
(covers shiro-core, shiro-web, shiro-spring, shiro-lang,
shiro-event, shiro-config-core, shiro-config-ogdl,
shiro-crypto-hash, shiro-crypto-cipher, shiro-cache,
shiro-crypto-core — 11 jars, all Java 8 bytecode)
- No UnsupportedClassVersionError in the build log
Dependabot:
- org.apache.shiro* and org.apache.shiro:* are already in the
.github/dependabot.yml full-ignore list (added before #75), so
this won't get auto-bumped to 2.x in the future.
Notes:
- The maven-shade-plugin exclusions on shiro-web and shiro-core in
modules/shindig-uber/pom.xml are kept as-is. They exclude these
two jars from the shaded uber-jar; that decision predates this
PR and is independent of the bytecode-version fix. Re-evaluating
whether to shade them in is a separate conversation.
- This is the second half of the bytecode-mismatch bug originally
tracked in #74. BouncyCastle half was fixed by #77.
Fixes #78
> Co-Authored by Mavis v1.0.0 using minimax-m3 with agent mavis.
natechadwick
approved these changes
Aug 28, 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.
Summary
Pins all
org.apache.shiro:shiro-*artifacts to 1.13.0 — the last Java 1.8 compatible release. Shiro 2.0.0 dropped Java 8 support; 2.1.0 ships Java 11 bytecode (major version 55), which can causeUnsupportedClassVersionErroron a true Java 8 runtime. 1.13.0 ships Java 8 bytecode (major version 52) and theorg.apache.shiro.*API surface is unchanged for the ways this project uses it (web auth + JEE filter chain inshindig-uber).This is the second half of the bytecode-mismatch bug originally tracked in #74. The BouncyCastle half was fixed by #77.
Why not just one direct version pin?
1.13.0 also pulls in
shiro-cacheandshiro-crypto-coretransitively fromshiro-core, and the spring/config/lang/crypto/event artifacts each have their own release line. Pinningshiro-coreindependencyManagementis not enough on its own — some modules resolved 2.1.0 for transitive artifacts (e.g.shiro-langinshindig-uber) before this fix. The 9dependencyManagemententries + theshiro.versionproperty pin the wholeshiro-*family in lockstep, matching the pattern from #77 and #79.Touched files (2 files, +48 / −1)
pom.xml(root)<shiro.version>1.13.0</shiro.version>in<properties>; + 9<dependencyManagement>entries:shiro-core,shiro-web,shiro-spring,shiro-lang,shiro-event,shiro-config-core,shiro-config-ogdl,shiro-crypto-hash,shiro-crypto-ciphermodules/shindig-uber/pom.xml<version>2.1.0</version>→<version>${shiro.version}</version>on the only directshiro-webdeclarationNo Java/import changes anywhere.
Verification
./mvn-env.sh clean install -DskipTests→ BUILD SUCCESS in 3:56 (full reactor, 61 modules, Java 1.8.0_504)javap -von every resolvedshiro-*-1.13.0.jar→ major version: 52 (Java 8 bytecode) for all 11 jars (the 9 directly managed plusshiro-cacheandshiro-crypto-corethat come in transitively)UnsupportedClassVersionErrorin the build logmaven-shade-plugin<excludes>forshiro-webandshiro-coreinmodules/shindig-uber/pom.xmlare left in place (they prevent the two jars from being included in the shaded uber-jar; that decision predates this PR and is independent of the bytecode fix)Dependabot
org.apache.shiro*andorg.apache.shiro:*were already in the.github/dependabot.ymlfull-ignore list (added before #75), so this won't get auto-bumped to 2.x in the future.Out of scope
maven-shade-plugin<excludes>forshiro-web/shiro-core(separate conversation — whether to shade them in is a packaging decision, not a bytecode fix)References
maven-shade-pluginexclude documentation: https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#excludes