Background: in process of upgrading to Gradle 6.1.1 + Eclipse 2019-12, heavily applied configuration avoidance practices.
Eclipse has a concept of project-to-project dependencies which are separate from classpath dependencies. For Java projects those inter-project dependencies can be seen:
- Project “Properties” -> “Java Build Path” section -> “Projects” tab, showing “Required projects on the build path”
- In the project’s .project file, inside …
Eclipse (used to) use these to control the project build order. This is especially important if parallel building is enabled in Eclipse. Without this we witnessed intermittent (frequent) build errors requiring repeated refresh + build cycles to complete successfully.
We no longer see these inter-project dependencies appear anywhere and we do see various errors we can’t truly explain, such as The project was not built due to "Resource already exists on disk" errors in eclipse (which may or may not be related, esp. in the context of concurrent builds).
Explicitly listing project dependencies using Eclipse plugin doesn’t seem to help (it used to work before). Is this related to configuration avoidance? When Buildship imports projects it isn’t really executing tasks, so it may not trigger all configuration? How does this work? Is there a preferred way to set inter-project dependencies?