Skip to content

Migrate from Commons Lang 2 to Commons Lang 3 - #148

Open
timja-bot wants to merge 3 commits into
jenkinsci:masterfrom
timja:commons-lang3
Open

timja-bot wants to merge 3 commits into
jenkinsci:masterfrom
timja:commons-lang3

Conversation

@timja-bot

Copy link
Copy Markdown
Contributor

Migrate from deprecated/EOL Commons Lang 2 to Commons Lang 3.

Part of the effort to remove Commons Lang 2 from Jenkins core — jenkinsci/jenkins#16404,
jenkinsci/jenkins#26105. Commons Lang 2 is EOL and carries an unfixed advisory
(GHSA-j288-q9x7-2f5v).

What's changed

  • Renamed the org.apache.commons.lang.* imports to org.apache.commons.lang3.* and declared
    io.jenkins.plugins:commons-lang3-api.

ArrayUtils.reverse, Validate.notNull and StringUtils.trimToNull have no clean JDK equivalent
(or, for trimToNull, a subtly different one), and all behave identically in Lang 3.

Testing done

mvn -B -ntp clean verify passes locally on Java 21 / macOS.

The ban-commons-lang-2 enforcer rule was left disabled: it needs parent POM 6.2116.v7501b_67dc517 or newer, and parent 6.x requires Jenkins 2.475+
(Jakarta EE 9) while this plugin targets 2.387.3.

Note: mvn clean verify needs JDK 17 here — on JDK 21 license-maven-plugin 1.15 fails with
Unsupported class file major version 65, unrelated to this change.

Submitter checklist

  • Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
  • Ensure that the pull request title represents the desired changelog entry
  • Please describe what you did
  • Link to relevant issues in GitHub or Jira
  • Link to relevant pull requests, esp. upstream and downstream changes
  • Ensure you have provided tests that demonstrate the feature works or the issue is fixed

🤖 This pull request was generated with AI assistance (Claude Code) as part of a bulk migration
across Jenkins plugins. If anything here looks wrong, please comment on this PR or contact @timja.

@timja-bot
timja-bot requested a review from a team as a code owner August 3, 2026 10:30

@oleg-nenashev oleg-nenashev left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

timja and others added 2 commits August 3, 2026 13:23
The old toolchain could not generate the @extension index on Java 25, so no
descriptors registered and six tests failed. This also fails on master.

- parent 4.66 -> 6.2211.v27f680c93c53, Jenkins baseline 2.387.3 -> 2.479.3,
  BOM updated to match; enables the ban-commons-lang-2 enforcer rule
- let the BOM manage maven-plugin, promoted-builds, config-file-provider and
  ant so the optional plugins stay mutually loadable
- pin javax.annotation-api 1.3.2; maven-plugin pulls 1.2 and 1.3.2 down
  different paths, tripping RequireUpperBoundDeps
- replace the removed @bug test annotation with @issue
- ReleaseStepTest: wait for the downstream build before deleting it, which
  was a pre-existing race

mvn clean verify passes on Java 21 and Java 25.
@timja
timja requested a review from a team August 4, 2026 21:01
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.

3 participants