Details
Description
For instance: Change a cpp property on a non-cpp file. The project will be re-resolved and the corresponding artifact will be temporarily removed. Later we will find out that no transformer command has actually changed, so the artifact will be rescued. However, its parent will still get rebuilt unnecessarily, due to several reasons:
- removeArtifactsAndExclusiveDependents() clears the timestamp of the parent artifact
- On the next rule application, the rescued artifact will appear as a newly added input, leading to the rule getting re-applied.
- The rule might have been marked for re-application.
So it seems that artifact rescuing somehow needs to take parent artifacts and/or rules into account. It is not entirely clear to me yet how that should be implemented.