Skip to content

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

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

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

Conversation

@inktomi

@inktomi inktomi commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

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

1 participant