Skip to content

3.0 - Full rewrite, Gradle 9, Java-centric API #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 6, 2025

Conversation

Jonathing
Copy link
Member

@Jonathing Jonathing commented Apr 20, 2025

GradleUtils 3.0 refocuses itself on being a lightweight Gradle plugin with the intent of providing some additional functionality for consumers.

Shared Utilities

GradleUtils now includes a public package, net.minecraftforge.gradleutils.shared, that is designed to be used by our plugins to reduce duplicate code and standardize how they operate.

Git Version Plugin split

Git Version is no longer included and is now an optional integration. It will be developed in the gradle-plugin folder in MinecraftForge/GitVersion. This also includes the changelog functionality.

Git Version: net.minecraftforge.gitversion
Git Changelog: net.minecraftforge.changelog

  • A lot of the code in GradleUtils implicitly references it using @CompileDynamic to avoid a hard dependency on it. The Git Version plugin depends on GradleUtils which would cause a circular dependency.
  • Functionality that requires the presence of Git Version (workflow YAML generation, PomUtils#addRemoteDetails(MavenPom) without the URL) will now display warnings or throw errors if net.minecraftforge.gitversion is not applied.

API Restructuring

The API is exclusively in Java and will now play nice with JavaDocs and DSL linting (Groovy and Kotlin).

The only code in the plugin that uses Groovy are internal implementations that cannot be accessed publicly.

@Jonathing Jonathing added documentation Improvements or additions to documentation enhancement New feature or request labels Apr 20, 2025
@Jonathing Jonathing self-assigned this Apr 20, 2025
@Jonathing Jonathing force-pushed the feat/jonathing/3.0 branch from 5555889 to 8c705dc Compare August 6, 2025 16:13
Jonathing added a commit to Jonathing/GradleUtils that referenced this pull request Aug 6, 2025
@Jonathing Jonathing force-pushed the feat/jonathing/3.0 branch from 8c705dc to f226dcb Compare August 6, 2025 16:17
@Jonathing Jonathing changed the title 3.0 - API restructuring and Deprecation removals 3.0 - Full rewrite, Gradle 9, Java-centric API Aug 6, 2025
@Jonathing Jonathing force-pushed the feat/jonathing/3.0 branch from cd231e3 to 002658f Compare August 6, 2025 17:35
@Jonathing Jonathing marked this pull request as ready for review August 6, 2025 17:40
@Jonathing
Copy link
Member Author

This is now ready for review. I've edited the description to account for recent changes. I will likely commit this with the tag 3.0-beta sometime this evening or tomorrow to get the ball rolling.

@LexManos
Copy link
Member

LexManos commented Aug 6, 2025

Nothing in the code is jumping out at me as wrong.
But my eyes glaze over when it comes to gradle stuff.
Only thing I would suggest is writing a central readme/features file that explicitly states what we intend to be public and thus need to support feature wise.
Anything else is internal/can break.

@Jonathing Jonathing merged commit 002658f into MinecraftForge:main Aug 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants