-
-
Notifications
You must be signed in to change notification settings - Fork 229
Closed
Description
This project’s build logic is, to put it mildly, involved. I think it could be improved upon.
I have two major criticisms:
- The build logic relies a lot on the magic Gradle allows with Groovy (for example: setting properties on
project.extthat are then read by other projects). Even though I’ve read through the build files a lot by now, I still don’t understand how it all works together. This is worsened by the fact that no help by the IDE is possible and that the logic relies on the robstoll Gradle plugins, which do a lot of magic and pre-configuration under the hood. - Not all task dependencies are set up properly, (which, from my analysis is why Build Improvements #743 fails)
I can’t promise I’ll find the time, but if I do, I’d like to improve the build logic of this project. I created this ticket so that we can agree on what a better build setup should look like.
I propose to:
- Rewrite the build logic in Kotlin. This gives us a lot more help from the IDE.
- Use standard plugins wherever possible. Try to remove the robstoll plugins. (This last point will probably not sound good to you. I am not suggesting to duplicate logic all over Atrium. I am, however, suggesting that configuration (as opposed to functionality) should be contained entirely in this project. We have seen in the past that it is difficult to change the robstoll Gradle plugins because multiple projects rely on it. From my point of view, duplicating some configuration over some projects is better than having a build logic that is both hard to understand and, even worse, hard to evolve).
- At a later point: Make the logic generator a Gradle plugin on its own that lives in a different repository. This allows third parties to use it as well.
What’s your opinion on this?