Skip to content

fix(deps): pin Shiro to Java 8-compatible line (1.13.0) - #80

Merged
natechadwick merged 1 commit into
mainfrom
bugfix/78-shiro-1.13.0
Aug 28, 2026
Merged

fix(deps): pin Shiro to Java 8-compatible line (1.13.0)#80
natechadwick merged 1 commit into
mainfrom
bugfix/78-shiro-1.13.0

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

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 cause UnsupportedClassVersionError on a true Java 8 runtime. 1.13.0 ships Java 8 bytecode (major version 52) and the org.apache.shiro.* API surface is unchanged for the ways this project uses it (web auth + JEE filter chain in shindig-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-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, matching the pattern from #77 and #79.

Touched files (2 files, +48 / −1)

File Change
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

No Java/import changes anywhere.

Verification

  • ./mvn-env.sh clean install -DskipTestsBUILD SUCCESS in 3:56 (full reactor, 61 modules, Java 1.8.0_504)
  • javap -v on every resolved shiro-*-1.13.0.jarmajor version: 52 (Java 8 bytecode) for all 11 jars (the 9 directly managed plus shiro-cache and shiro-crypto-core that come in transitively)
  • No UnsupportedClassVersionError in the build log
  • The 2 pre-existing maven-shade-plugin <excludes> for shiro-web and shiro-core in modules/shindig-uber/pom.xml are 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* and org.apache.shiro:* were 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.

Out of scope

References

Co-Authored by Mavis v1.0.0 using minimax-m3 with agent mavis.

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
natechadwick merged commit 6b65ce8 into main Aug 28, 2026
3 checks passed
@natechadwick
natechadwick deleted the bugfix/78-shiro-1.13.0 branch August 28, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[deps] Pin Shiro to Java 8-compatible line (org.apache.shiro:shiro-* 2.1.0 -> 1.13.0)

2 participants