Skip to content

Add settings plugin for configuration cache compatible multi-module testing#492

Open
inktomi wants to merge 7 commits intorunningcode:masterfrom
inktomi:config-cache
Open

Add settings plugin for configuration cache compatible multi-module testing#492
inktomi wants to merge 7 commits intorunningcode:masterfrom
inktomi:config-cache

Conversation

@inktomi
Copy link
Contributor

@inktomi inktomi commented Mar 6, 2026

Changes

  • Introduces com.osacky.fulladle.settings — a settings plugin that enables configuration cache compatible multi-module testing by flowing module metadata through JSON files instead of cross-project configuration
  • Fixes configuration cache compliance in the legacy Fulladle path by moving module wiring from task actions to configuration time (gradle.projectsEvaluated)
  • Fixes configuration cache issues in FladlePluginDelegate: uses defaultDependencies for lazy Flank dependency resolution, argumentProviders for CC-safe task args, and stores buildDirectory Provider instead of ProjectLayout in FlankJavaExec
  • Updated docs and changelog

How it works

When the settings plugin is applied, each subproject gets a FulladleModulePlugin that writes a JSON metadata file via FulladleModuleMetadataTask. The root YamlConfigWriterTask consumes these files through Gradle's dependency management — no Project references cross module boundaries.

Without the settings plugin, the legacy subprojects {} path still works. Module configuration now happens at configuration time rather than in task actions, so the configuration cache can serialize the task graph cleanly.

Test plan

  • Added multi-module configuration cache tests for both legacy and settings plugin paths (run twice, verify cache reuse)
  • Added FulladleSettingsPluginTest with 6 integration tests (submodules, disabled modules, overrides, flavors, non-Android modules)
  • Added ModuleMetadataParserTest with 11 unit tests
  • All 156 tests pass locally 🤞

inktomi added 7 commits March 2, 2026 11:04
…ed new FulladleSettingsPlugin to manage the fulladle multi-module setup and refactored to use it
Integrated AGP 9.0.1 changes, Gradle 9.4.0 wrapper update,
and develocity plugin 4.3.2 while preserving config-cache
compatibility changes (defaultDependencies, argumentProviders,
removed afterEvaluate wrappers).
- Use gradle.projectsEvaluated instead of afterEvaluate in FulladlePlugin
  so legacy path sees fully evaluated subprojects without needing
  evaluationDependsOnChildren (which breaks other plugins)
- Move configuration creation and extension setup to apply() phase
- Move automaticallyConfigureTestOrchestrator before onVariants loop
- Add CC multi-module integration tests for both legacy and settings paths
- Document settings plugin in multi-module-testing.md and changelog
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