Feat multiple graph export
๐ Description
Adds support for multiple graphs
๐ Motivation and Context
The current setup allows for a single graph to be generated in each project. But sometimes you want multiple graphs, where each graph has a completely independent config. This plays in nicely with the new rootModulesRegex configuration - you might decide to export a separate graph for each feature.
๐งช How Has This Been Tested?
- All unit tests pass locally.
- Updated sample app to have multiple graphs
๐ฆ Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
I went to great effort to not break backwards compatibility - the existing configuration setup is now the 'Primary Graph' config, and works fine with or without additional graphs.
โ Checklist
- [x] My code follows the code style of this project.
- [x] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
Generating multiple graphs was something on my wish-list too, thanks for the PR! I couldnt check it over the weekend but I'll take a look soon.
Hey, I've tested it on TIVI, and it failed with this error msg:
Configuration cache problems found in this build.
1 problem was found storing the configuration cache.
- Task `:createModuleGraph` of type `dev.iurysouza.modulegraph.gradle.CreateModuleGraphTask`: invocation of 'Task.project' at execution time is unsupported.
See https://docs.gradle.org/8.7/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution
See the complete report at file:///tivi/build/reports/configuration-cache/3lvifbv02nwz2s91i1swjoca5/8td6klwv4ixu1ovsmfu3g48hy/configuration-cache-report.html
> Invocation of 'Task.project' by task ':createModuleGraph' at execution time is unsupported.
It seems to work on the sample project, but not on other projects. That's new to me. We might need the help from a Gradle expert to figure out exactly why it works on the sample, but the error msg is kinda self explanatory. I think it's related to this.
Hey, I've tested it on TIVI, and it failed with this error msg:
Configuration cache problems found in this build. 1 problem was found storing the configuration cache. - Task `:createModuleGraph` of type `dev.iurysouza.modulegraph.gradle.CreateModuleGraphTask`: invocation of 'Task.project' at execution time is unsupported. See https://docs.gradle.org/8.7/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution See the complete report at file:///tivi/build/reports/configuration-cache/3lvifbv02nwz2s91i1swjoca5/8td6klwv4ixu1ovsmfu3g48hy/configuration-cache-report.html > Invocation of 'Task.project' by task ':createModuleGraph' at execution time is unsupported.It seems to work on the sample project, but not on other projects. That's new to me. We might need the help from a Gradle expert to figure out exactly why it works on the sample, but the error msg is kinda self explanatory. I think it's related to this.
Hmm, it's strange that it failed for you - when I try this on my machine, it succeeds for Tivi and the graphs are correctly generated. I do get the same error message, but only as a warning. In any case, I will see what I can do to make the plugin compatible with the configuration cache - it seems quite easy: https://docs.gradle.org/8.7/userguide/configuration_cache.html#config_cache:requirements:use_project_during_execution
I've fixed the issue with the configuration cache, on my machine it now works perfectly on Tivi without any errors or warnings. Thanks for testing it!
Great work on this one, @LukeNeedham! I've pushed a few minor tweaks, and I think we're ready to merge. Cheers!