configure-on-demand, decoupled projects, and parallel projects are documented on Gradle: Configure On Demand. it's a good read.
Decoupling is necessary for usage of configure-on-demand or parallel execution to not result in flawed build outcomes. The previous link does not mention that the common usage of allprojects {} and subprojects {} to share build logic results in coupling, but it is mentioned and denounced on Gradle: Sharing Build Logic between Subprojects.
Changes that should allow enabling configure-on-demand, and improve the current use of parallel execution:
usage of allprojects {} and subprojects {} has been removed
the plugin applications performed in those blocks have been moved to respective project scripts
Changes for the sake of cleanup:
geyser.platform-conventions now handles property expansion of platform files (rather than geyser.base-conventions)
previously its only purpose was applying geyser.publish-conventions
geyser.modded-conventions now also applies geyser.platform-conventions
geyser.build-logic has been removed in favour of geyser.base-conventions
lombok was not previously used in api, but has now been also removed from the classpath
Gradle convention: build-logic module renamed to buildSrc
configure-on-demand, decoupled projects, and parallel projects are documented on Gradle: Configure On Demand. it's a good read.
Decoupling is necessary for usage of configure-on-demand or parallel execution to not result in flawed build outcomes. The previous link does not mention that the common usage of
allprojects {}
andsubprojects {}
to share build logic results in coupling, but it is mentioned and denounced on Gradle: Sharing Build Logic between Subprojects.Changes that should allow enabling configure-on-demand, and improve the current use of parallel execution:
allprojects {}
andsubprojects {}
has been removedChanges for the sake of cleanup:
geyser.platform-conventions
now handles property expansion of platform files (rather thangeyser.base-conventions
)geyser.publish-conventions
geyser.modded-conventions
now also appliesgeyser.platform-conventions
geyser.build-logic
has been removed in favour ofgeyser.base-conventions
api
, but has now been also removed from the classpathbuild-logic
module renamed tobuildSrc