Skip to content

Fix build cache relocatability for checkstyle:check#5067

Open
ribafish wants to merge 2 commits intohibernate:mainfrom
ribafish:fix/build-cache-checkstyle-relocatability
Open

Fix build cache relocatability for checkstyle:check#5067
ribafish wants to merge 2 commits intohibernate:mainfrom
ribafish:fix/build-cache-checkstyle-relocatability

Conversation

@ribafish
Copy link

@ribafish ribafish commented Mar 19, 2026

Summary

checkstyle:check has 83 cache misses across all modules because the project-level <resource> in the root pom.xml points at ${rootProject.directory} (to include LICENSE.txt in META-INF). This causes the Develocity Maven extension to fingerprint the entire workspace root directory tree as a build cache input for all goals consuming project resources. After a first build, target/ directories appear under the root, changing the fingerprint and invalidating the cache for checkstyle:check in every module.

Fix: replace the resource declaration with a dedicated maven-resources-plugin:copy-resources execution.

Evidence:

JIRA: https://hibernate.atlassian.net/browse/HSEARCH-5595


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license
and can be relicensed under the terms of the LGPL v2.1 license in the future at the maintainers' discretion.
For more information on licensing, please check here.


@hibernate-github-bot
Copy link

hibernate-github-bot bot commented Mar 19, 2026

Thanks for your pull request!

This pull request appears to follow the contribution rules.

› This message was automatically generated.

ribafish added a commit to gradle/develocity-oss-projects that referenced this pull request Mar 19, 2026
Point experiment at fork branch with the fix to validate before
applying the workaround in the experiment workflow.

Upstream PR: hibernate/hibernate-search#5067
ribafish added a commit to gradle/develocity-oss-projects that referenced this pull request Mar 19, 2026
checkstyle:check is not cache-relocatable because project resources
include ${rootProject.directory}, fingerprinting the entire workspace
root tree including target/ dirs from previous builds (83 cache misses).

Upstream PR: hibernate/hibernate-search#5067
The project-level <resource> pointing at ${rootProject.directory} (to
include LICENSE.txt in META-INF) caused the entire workspace root to be
fingerprinted as a build cache input for all goals consuming project
resources. After a first build, target/ directories appear under the
root, changing the fingerprint and causing cache misses for
checkstyle:check across all 83 modules.

Replace with a dedicated maven-resources-plugin copy-resources execution
that achieves the same result (LICENSE.txt in META-INF) without polluting
the project resource directories.
@ribafish ribafish force-pushed the fix/build-cache-checkstyle-relocatability branch from 581bb21 to c79235f Compare March 19, 2026 11:28
The HibernateSearchProcessor generates *__.java metamodel files into
target/generated-test-sources/test-annotations. Maven adds this as a
test source root, and the Develocity extension fingerprints the directory
contents as a cache input for checkstyle:check. This causes 4 cache
misses in the metamodel integration test modules because the generated
files only appear after compiler:testCompile runs.

Two fixes:
- Add **/*__.java to checkstyle excludes (skip style-checking generated code)
- Add develocity-custom-user-data.groovy to exclude **/target/** from the
  checkstyle testSourceDirectories cache input fingerprint
@ribafish ribafish force-pushed the fix/build-cache-checkstyle-relocatability branch from a1e8b3e to 0a07a9c Compare March 19, 2026 12:19
Copy link
Member

@marko-bekhta marko-bekhta left a comment

Choose a reason for hiding this comment

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

Hey 👋🏻 🙂

Thanks for the PR! Hm that's an interesting finding.

Comment on lines +1 to +9
buildCache.registerMojoMetadataProvider(context -> {
context.withPlugin("maven-checkstyle-plugin", () -> {
context.inputs(inputs -> {
inputs.fileSet("testSourceDirectories", fileSet ->
fileSet.excludes("**/target/**")
)
})
})
})
Copy link
Member

Choose a reason for hiding this comment

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

we have https://github.com/hibernate/hibernate-develocity-maven-extension for these. would you want to move it there ?

@sonarqubecloud
Copy link

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