Refactor lockfile tasks to use configurations #49
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This reworks the lockfile-handling portion of the plugin to use custom gradle configurations to pass generated files between projects instead of directly depending on tasks from other projects.
The plugin now creates a
betterDynamicFeatures
configuration on the base and feature modules of the project, and adds generated dependency graph reports (the .json files we use) as artifacts on this configuration. The base module's lockfile tasks can then depend on those artifacts from the configuration instead of needing to directly depend on the feature module's tasks and their outputs. This is a precursor to support project isolation (the resource scanning tasks still need to be rewritten) and in the meantime this fixes some issues when executing with configuration on demand enabled (fixes #43).The
CheckLockfileTask
was reworked a bit as part of this refactor, and it now computes the lockfile diff entirely in-memory instead of needing to configure redundant tasks to write temporary files as before.Lastly, this seems to have caught a bug with the way new transitive dependencies were being handled in lockfiles, sweet!
Sorry for the big PR-- it's difficult to split apart since everything was so interconnected (which this is "supposed" to solve).