This is an automated email from the ASF dual-hosted git repository. papegaaij pushed a commit to branch japicmp-baseline in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 6bd4003679df47c939669b174db902dbee99d735 Author: Emond Papegaaij <[email protected]> AuthorDate: Fri Sep 11 12:14:53 2026 +0200 Derive the japicmp baseline from the major version of the project The baseline was hardcoded as 11.0.0-SNAPSHOT, so a build on master compared each module against whatever snapshot happened to sit in the local or remote repository: last night's CI artifact, or the jar installed an hour ago. On the line where API changes are allowed, that comparison is arbitrary, and it breaks the build on changes master explicitly permits. The baseline is now <major>.0.0, derived from the project version. On a maintenance branch that release exists, so the check runs exactly as it did with the hardcoded value; on master it has not been released yet, so japicmp resolves no baseline and only warns. The same configuration therefore works on every branch, and releasing or branching a line needs no change to the pom. ignoreMissingOldVersion is set explicitly. Both 0.25.4 and 0.26.1 already only warn on an unresolvable baseline, so it changes nothing today; pinning it keeps a later plugin version from turning that warning into a build failure on the development line. The only visible effect is in the build output: every jar module on master now logs one warning per build saying it has no resolvable old version. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> --- AGENTS.md | 7 ++++--- pom.xml | 8 +++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4d9a564520..6ac2e73d59 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -78,9 +78,10 @@ header — copy it when you add one. ## API compatibility -- japicmp fails the build on binary-incompatible changes. On a maintenance branch it compares - against that line's first release, so nothing incompatible can land there. On `master` it - compares against the previous `11.0.0-SNAPSHOT`, which leaves it quiet about most breaks. +- japicmp fails the build on binary-incompatible changes. Its baseline is the first release of + the line the branch is on, derived from the project version: on a maintenance branch that + release exists and nothing incompatible can land there, while on `master` it does not exist + yet, so no comparison happens and the plugin only warns. - Quiet is not permission. Changing or removing public API on `master` is allowed but not free: it needs a justification in the commit message, and where the old member can survive next to the new one, deprecate it rather than remove it. diff --git a/pom.xml b/pom.xml index d411cf03d7..8d1716f8cb 100644 --- a/pom.xml +++ b/pom.xml @@ -846,11 +846,16 @@ <artifactId>japicmp-maven-plugin</artifactId> <version>${japicmp-maven-plugin.version}</version> <configuration> + <!-- + The first release of this line. It does not exist yet on the development + line, so japicmp finds no baseline there and stays quiet; on a maintenance + branch it resolves and the check runs. No pom change at release time. + --> <oldVersion> <dependency> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> - <version>11.0.0-SNAPSHOT</version> + <version>${project.artifact.selectedVersion.majorVersion}.0.0</version> <type>jar</type> </dependency> </oldVersion> @@ -860,6 +865,7 @@ </file> </newVersion> <parameter> + <ignoreMissingOldVersion>true</ignoreMissingOldVersion> <skipXmlReport>true</skipXmlReport> <skipHtmlReport>true</skipHtmlReport> <breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
