main Changelog 3.2 === - 3.2.7 Opt-in tool definition override for plugins - 3.2.6 Fix flow actions causing null pointer exception in some cases - 3.2.5 Allow usage of #launcherFor without the 'java' plugin Not all Gradle plugins are required to apply the 'java' plugin. This means that for plugins which need a Java launcher for a task and/or JavaExec(Spec), we need to be flexible to avoid locking in projects into needing that plugin. I've locked down the SharedUtil methods for getting Java launchers. #launcherFor requires Project and #launcherForStrict requires JavaToolchainService (provided by JavaExecSpec, or can be injected at project configuration). If no Java toolchain or 'java' plugin, `JavaLanguageVersion#current` will be used to compare to the required Java version to run. As a reminder, breaking changes are permitted for `gradleutils-shared` as it must only ever be shadowed by plugins that use it. - 3.2.4 Cleaned up internal problem reporting - 3.2.3 Fix SharedUtil#toLog not actually working - 3.2.2 Add flag to set publication artifact ID from base.archivesName Apologies for forgetting how unbelievably inconsistent Gradle can be. The project's `base.archivesName` is used as the base name for archives, but that name isn't used for publications even though it's used for the archives. It's deep in internals, but publication name is set by `project.name`. When writing our buildscripts, I was under the impression that `base.archivesName` was used for the artifact ID for publications. Thankfully, most of our projects already use the project name as the artifact ID, so there has been no impact. I've added it in GradleUtils but it's disabled by default. You can use it by setting this flag in your `gradle.properties`: ```properties net.minecraftforge.gradleutils.publishing.use-base-archives-name=true ``` - 3.2.1 Make EnhancedProblems serializable and no longer extend Problems Addresses known issues with custom objects implementing the `Problems` interface. Also allows for cleanup in ToolExecBase where the enhanced problems isntance would need to be recalculated at execution time, it can instead now serialize the enhanced problems instance. This *does not* affect existing plugins as all plugins must shadow the shared base. No changes need to be made when updating the shared base, just a re-compile. - 3.2.0 Stabilize publication promotion Publication promotion (also known as artifact promotion) promotes a published publication on the Forge files site to become the "latest" version it displays. It also updates the files site and makes it aware of the new version of the project that was just pushed to the maven. This is designed for internal use only by Forge projects, or for projects that have trusted access to the Forge maven. However, it is not a requirement for all Forge projects to be promoted on the files site. As a reminder, promotion is requested like this in your buildscript (Groovy DSL): ```groovy publishing { repositories { maven gradleutils.publishingForgeMaven } publications.register('pluginMaven', MavenPublication) { gradleutils.promote(it) // ... } } ``` 3.1 === - 3.1.4 Fix illegal usage of TaskProvider#configure after evaluation I'm on a roll today 😔 - 3.1.3 Fix task creation ignoring input publication - 3.1.2 Allow promotion task to be configured - 3.1.1 Applying GradleUtils on projects not working - 3.1.0 Re-introduce artifact promoting Still experimental. Will only work if the publishing Forge maven is added to the publishing repos. The promotion task will become a finalizer of the relevant publish task (i.e. `publishMavenJavaPublicationToForgeRepository`). You can promote a publication by doing this: ```groovy publishing { repositories { maven gradleutils.publishingForgeMaven } publications.register('pluginMaven', MavenPublication) { gradleutils.promote(it) // ... } } ``` 3.0 === - 3.0.0 3.0 Full Release