Currently, GradleUtils uses an awkward system to self-version itself. It holds source files in buildSrc, which is referenced by the buildscript for version calculation and changelog generation; the buildscript then copies over these source files to the root project source folder, ignored by git to avoid being committed.
I propose GradleUtils should itself use manual/maintainer-controlled versioning, instead of relying on this awkward system of copying source files from subproject to root project.
There are multiple reasons as to why this should be done:
GradleUtils would be the sole project that uses manual versioning in NeoForged. All other projects would rely in GradleUtils for their versioning and changelog generation. As GradleUtils is likely infrequently updated, the burden of maintainer-controlled versioning won't be too much of a hassle over the long term.
This gets rid of that awkward/cursed source copying system, simplying the project structure significantly.
This gives us the flexibility to collate many changes which would each break the public API as one release, rather than being staggered across multiple releases (since each commit/PR would be built and published as its own release).
This would mean that changelogs wouldn't be auto-generated anymore (unless its automated via another way), but I find that acceptable due to two reasons: few if not none reads the changelog for GradleUtils, and changelogs would still be part of the GitHub release information.
Personally, I find this the only good option to proceed with GradleUtils for future development.
An alternative would be to use a previously-published version of GradleUtils in this project, pinned to an exact version.
Currently, GradleUtils uses an awkward system to self-version itself. It holds source files in
buildSrc
, which is referenced by the buildscript for version calculation and changelog generation; the buildscript then copies over these source files to the root project source folder, ignored bygit
to avoid being committed.I propose GradleUtils should itself use manual/maintainer-controlled versioning, instead of relying on this awkward system of copying source files from subproject to root project.
There are multiple reasons as to why this should be done:
This would mean that changelogs wouldn't be auto-generated anymore (unless its automated via another way), but I find that acceptable due to two reasons: few if not none reads the changelog for GradleUtils, and changelogs would still be part of the GitHub release information.
Personally, I find this the only good option to proceed with GradleUtils for future development.
An alternative would be to use a previously-published version of GradleUtils in this project, pinned to an exact version.