Skip to content

fix(build): declare <url> in the SCIM module POM and gate PRs on the Maven Central rules - #45

Merged
hendrikebbers merged 2 commits into
mainfrom
fix/scim-pom-url
Sep 25, 2026
Merged

hendrikebbers merged 2 commits into
mainfrom
fix/scim-pom-url

Conversation

@herbie-bot

@herbie-bot herbie-bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

What

  1. Adds the missing <url> element to spring-services-scim/pom.xml, matching every other module POM in the reactor.
  2. Adds a Check POMs against the Maven Central rules step to build.yml that runs PomChecker on every PR.

Why

spring-services-scim was the only one of the eleven POMs without an explicit <url>. Maven then derives the value from the parent as parent.url + "/" + artifactId, and PomChecker rejects that derived value:

[ERROR] [mavenCentral] PomChecker detected errors in spring-services-scim-1.4.0.pom
[ERROR] <url> is not defined in POM. Will use computed value from parent:
	https://github.com/OpenElementsLabs/spring-services/spring-services-scim
[ERROR] ... Rules for publishing to Maven Central were not met

This aborted the 1.4.0 release in JReleaser's Verifying POMs stage — before any upload, so nothing reached Maven Central and no GitHub release was created. The v1.4.0 tag has been re-pointed at a commit carrying this same fix.

The guard

The CI step runs the same PomChecker goal JReleaser uses during the release:

./mvnw -B org.kordamp.maven:pomchecker-maven-plugin:1.14.0:check-maven-central \
  -Dchecker.release=false -Dchecker.fail.on.warning=true
  • checker.fail.on.warning=true is what makes it bite — PomChecker classifies the derived-from-parent cases as warnings, and JReleaser treats them as fatal. Without this flag the broken POM passes.
  • checker.release=false skips the "no -SNAPSHOT" rule, which main must violate. The release workflow already verifies the POM version against the tag.

Verified locally: green across all eleven modules with the fix, and red with the exact release error message when the <url> line is removed again.

🤖 Generated with Claude Code

hendrikebbers and others added 2 commits September 25, 2026 07:50
spring-services-scim was the only module without an explicit <url>.
Maven then derives it from the parent as parent.url + "/" + artifactId,
and PomChecker rejects that derived value, which made JReleaser abort
the 1.4.0 release in the "Verifying POMs" stage before any upload.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Runs PomChecker's check-maven-central on every PR with the same settings
JReleaser applies during the release, so a POM that Maven Central would
reject fails in CI instead of after the release tag is pushed.

fail.on.warning is what makes it bite: PomChecker reports a value derived
from the parent (the missing <url> that broke 1.4.0) as a warning, and
JReleaser treats those as fatal. The release check is disabled because
main carries a -SNAPSHOT version; the release workflow verifies the
version against the tag instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@herbie-bot herbie-bot changed the title fix(build): declare <url> in the SCIM module POM fix(build): declare <url> in the SCIM module POM and gate PRs on the Maven Central rules Sep 25, 2026
@hendrikebbers
hendrikebbers merged commit cc46a86 into main Sep 25, 2026
1 check passed
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.

2 participants