Skip to content

fix(build): declare the extensions.xml namespace so Renovate tracks Nisse - #183

Merged
jimisola merged 2 commits into
mainfrom
fix/renovate-trackable-extensions-xml
Aug 16, 2026
Merged

fix(build): declare the extensions.xml namespace so Renovate tracks Nisse#183
jimisola merged 2 commits into
mainfrom
fix/renovate-trackable-extensions-xml

Conversation

@jimisola

Copy link
Copy Markdown
Member

ⓘ Follow-up to the git-derived versioning change. Small, but it is the difference between Nisse being maintained and never being updated again.

What & Why

Renovate parses .mvn/extensions.xml by default — it is in the maven manager’s default file patterns. But it rejects the file outright unless the root element carries a recognised namespace. From lib/modules/manager/maven/extract.ts:

const supportedExtensionsNamespaces = [
  "http://maven.apache.org/EXTENSIONS/1.0.0",
  "http://maven.apache.org/EXTENSIONS/1.1.0",
  "http://maven.apache.org/EXTENSIONS/1.2.0",
];

function parseExtensions(raw: string, packageFile: string): XmlDocument | null {
  ...
  if (!supportedExtensionsNamespaces.includes(attr.xmlns)) {
    return null;      // <- file silently skipped
  }

Ours declared no xmlns at all, so attr.xmlns was undefined, the file was skipped, and Nisse would have sat at 0.9.5 indefinitely while every other dependency in the repo kept moving. No warning, no PR, nothing to notice — exactly the kind of silent rot pinning a version is meant to prevent.

(0.9.5 is current as of today — released 2026-08-10. The problem is the future, not the present.)

Verification

The namespace is not just cosmetic to Maven, so I checked it does not change resolution:

git tag 9.9.9
mvn --batch-mode help:evaluate -Dexpression=project.version -q -DforceStdout
→ 9.9.9

Unchanged. CI on this PR builds the project for real.

Author checklist

  • Verified against Renovate’s actual source, not just its docs
  • Verified Maven still resolves the git-derived version
  • Conventional Commit title, DCO sign-off

…isse

Renovate parses `.mvn/extensions.xml` by default, but its maven manager rejects
the file outright unless the root element carries a recognised EXTENSIONS
namespace -- parseExtensions() returns null when `attr.xmlns` is not one of
EXTENSIONS/1.0.0, 1.1.0 or 1.2.0, and the file is then skipped with no warning.

Ours declared no xmlns at all, so Nisse would have sat at 0.9.5 indefinitely
while every other dependency in the repo kept moving. Silent, and exactly the
kind of rot the pin was supposed to avoid.

Verified that Maven still resolves the version with the namespace present:
tagging 9.9.9 and running `mvn help:evaluate -Dexpression=project.version`
prints 9.9.9, unchanged.

Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
@jimisola
jimisola merged commit 0d83b15 into main Aug 16, 2026
7 of 9 checks passed
@jimisola
jimisola deleted the fix/renovate-trackable-extensions-xml branch August 16, 2026 17:22
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.

1 participant