main Changelog 3.0.0-beta ========== - 3.0.0-beta.18 Bump GV plugin, fixing the failing build - 3.0.0-beta.17 Split off shared base into its own subproject Note: This is NOT another plugin. This week, a lot of work has been spent merging the common code between FG7, FD7, and GU3 into one shared package that all of them can extend off of. Originally this was just a package within GU3 itself, but this will inevitably cause problems with plugins that may need to interface with GU3 itself (not the shared base). My solution was to create 'gradleutils-shared', a project that holds only this common code and nothing else. The point is for our Gradle projects to shadow in this code so that it doesn't have an arbitrary requirement on GU3 being present in the classpath. I am publishing 'gradleutils-shared' in a way so that the shadow jar is the only one that can be consumed. Project dependencies cannot read module files, however, so the GU3 buildscript itself has a workaround for it. - 3.0.0-beta.16 Consolidate GradleUtilsExtension repos - 3.0.0-beta.15 Fix issues with build.gradle linting See https://github.com/MinecraftForge/ForgeGradle/issues/984#issuecomment-3181608393 I hate JetBrains - 3.0.0-beta.14 Set ToolExec base properties using #set instead of #convention The conventions of these properties can be easily overridden by other plugins such as the base 'java' plugin, where it sets the convention of the JavaLauncher to be the project toolchain. This caused issues with projects that required toolchain language version 8. - 3.0.0-beta.13 Build ourselves using GU3 and GV3 GradleUtils 3.0.0-beta.10 Git Version plugins 3.0.0-beta.9 - 3.0.0-beta.12 Remove more generic wildcards - 3.0.0-beta.11 Delete ConfigureTeamCity - 3.0.0-beta.10 Remove generic wildcard in various PomUtils things - 3.0.0-beta.9 Cleaned up EnhancedTask to fix some illegal access issues - 3.0.0-beta.8 Fix configuration cache issues Forgot to make an unimportant field transient. The Problems and ProviderFactory services are always accessible. - 3.0.0-beta.7 Fixed issues with Gradle property decoration Any public or protected method that has the getter naming convention (getProperty) is decorated by Gradle when the class is instantiated. A lot of things in the shared package are largely internal and do not need modifications from Gradle, so they have been renamed without the "get" keyword to avoid that. For non-tasks, the `@Internal` annotation has no effect. - 3.0.0-beta.6 Fixed getting Java launchers eagerly resolving the project toolchain - 3.0.0-beta.5 Consolidate `PomUtils#addRemoteDetails` Removes `#addForgeDetails`. Forge organization information is included if the URL contains "github.com/MinecraftForge/". - 3.0.0-beta.4 Fix plugin validation IntelliJ didn't save these files so it wasn't picked up by lazygit :P `validatePlugins` ensures the proper usage of task annotations, and it seems like I misused Gradle's `@Internal` annotation for these properties. - 3.0.0-beta.3 Mark ToolExecBase#getProblems as internal from Gradle Prevents Gradle from treating `#getProblems` as a property getter, causing plugin validation issues. - 3.0.0-beta.2 Fix workflow not checking licenses - 3.0.0-beta.1 Fix build failure on Gradle 9 - 3.0.0-beta.0 3.0 - Full rewrite, Gradle 9, Java-centric API (#23) 2.6 === - 2.6.4 Only depend on assemble task if it exists Use `findByName` instead of `named` to avoid throwing an exception on an unknwon object` - 2.6.3 Delay task dependsOn until after evaluate It's possible to set up the changelog extension before the project has finished setting up lifecycle tasks such as `assemble`. - 2.6.2 Update fallback publishing maven URL Added `releases` - 2.6.1 Allow lenient GitVersion creation (until 3.0) Subprojects that do not need to use their own version will use the root project's version. For now this is handled by catching failure of the Git Version creation on the subproject, and trying to create one using the root project instead. Management of Git Version will be refined in GradleUtils 3.0. Consider the usage of it an incubating feature until then. - 2.6.0 Remove annoyances, fix remaining compatibility issues (#25) Remaining incompatibilites (won't be fixed) - Dependence on Java 17 Buildscript changes - Updated Gradle to 8.14 - Removed `buildSrc` - GradleUtils is now built against a redistributed Gradle API 7.3 dependency - Updated the Shadow plugin to 9.0.0-beta13 - Force Gradle daemon's JVM version to 17 to fix issues with Groovydoc task Code changes - Yet another big cleanup - Removed PromoteArtifact task (was marked as experimental, will be re-added in 3.0) - Updated Git Version - Removed annoyances within PomUtils - Restored backwards compatibility with Gradle 7.3 2.5 === - 2.5.1 Disable configuration cache until Gradle 9.0 Gradle's configuration cache comes with too many bugs to be worth the trouble. I will continue to make GradleUtils (along with our other plugins such as Licenser, ForgeGradle 7, etc.) compatible with it. - 2.5.0 Cleanup and Git Version Plugin API change - Small buildscript cleanup. - The `GitVersionExtension` class is now the public facing API for Git Version in the Gradle plugin. - Use `gitversion.tagOffset` instead of `gitversion.version.tagOffset`. - Many parts of Git Version API such as getting a directory now use Gradle's `DirectoryProperty` when applicable. - If configuration cache is not requested, Git Version will not disable reading from the system's Git config. - PomUtils cleanup. - `Developers` renamed to `developers` (now lowercase) to match `licenses`. The uppercase field will be removed in GU 3.0. - Licenses now use the SPDX identifier as the name and `repo` as the distribution, as recommended by the [reference spec](https://maven.apache.org/pom.html#Licenses). - All-around code cleanup. - Documentation is not a focus this time. 2.4 === - 2.4.19 Fix issues with artifact promotion task - 2.4.18 Make all log messages single-line - 2.4.17 Allow specific promotion type (either 'latest' or 'recommended') Also, fix webhook secret being used for username and password. Oops. - 2.4.16 Fix compile error + missing licenses - 2.4.15 Experimental artifact promotion task As part of my efforts to consolidate SharedActions, I've created this new experimental task to handle artifact promotion. It requies the same environment variables as before, but it is not automated. To use this, simply use `gradleutils.pom.promote()` inside of your maven publication. ```gradle publications.register('pluginMaven', MavenPublication) { gradleutils.pom.promote it changelog.publish it // ... ``` - 2.4.14 Fix log messages having insane indentations - 2.4.13 Update Git Version to 0.4.2 for suffix support - 2.4.12 Re-add deleted Changelog extension methods from 2.2 - Instead of #fromTag and #fromCommit, use #from - Instead of #disableAutomaticPublicationRegistration, use 'publishAll = false' - 2.4.11 Failhard in CI if the remote URL cannot be found - 2.4.10 Do not use Problems API, addresses #21 - 2.4.9 Remove debug code :P - 2.4.8 Stop publishing Git Version plugin For now, the Git Version part of GradleUtils can stay contained within GU itself until 3.0. When Git Version's Gradle plugin is split off into MinecraftForge/GitVersion, it will probably start from version 3.0 itself to accommodate for the fact that there are already versions 2.4.x of it. - 2.4.7 Fix setGitHubDetails incorrectly using the repo name as the org name Also, improve debugging issues related to PomUtils - 2.4.6 Update Git Version to 0.3.0 Fixes some issues dealing with tagged commits in subprojects. - 2.4.5 Fix generated changelogs using inverted markdown parameter - 2.4.4 Change default Gradle tasks to 'check publish' This is for the Gradle workflow. Adding 'check' before 'publish' allows the CI to check for things like licenses and unit tests (if applicable via the test task). - 2.4.3 Include project name in workflow name for generator Also, update Git Version to 0.2.12 - 2.4.2 Do not throw if GitHub details cannot be set - 2.4.1 Do not include SLF4J in fatjar - 2.4.0 Move all Git-related operations to GitVersion GradleUtils 2.3 was 90% JGit and Git-related operations, which are all now housed in the framework-agnostic GitVersion. Projects that do not opt-in to using GitVersion or having subprojects are not affected. There are a small amount of binary breaking changes in this update, but it should not affect Gradle buildscripts (the primary consumer of this) as they are dynamically compiled and can use Groovy's funky syntax to get what they need. 2.3 === - 2.3.6 Added null check when getting the base merge commit (#16) - 2.3.5 Bump toolchain to J11 because JGit 6.7 requires it - 2.3.4 Update gradle to 8.5 - 2.3.3 Fix issue with configuration cache and jgit - 2.3.2 Add some tags - 2.3.1 Publish to plugin portal Update/Shade JGit - 2.3.0 Pull Changelog into its own plugin, if you want to use it without the rest of the utils. Use recommended method of sharing task outputs between sub-projects. https://docs.gradle.org/current/samples/sample_cross_project_output_sharing.html 2.2 === - 2.2.0 Fix duplication of sources Cleanup build script Change published artifact to: net.minecraft:gradleutils Out maven repo is pretty dirty with case sensitive versions of this project, but this follows our expected standards. Remove TeamCity related things Add getPom() to the gradleutils extension to allow easier access. 2.1 === - 2.1.3 Add GradleUtils.minecraftLibsMaven (#15) - 2.1.2 Add LGPL3 and change MIT license link - 2.1.1 Remove teamcity config - 2.1.0 GradleUtils v2.1 Gradle 8.4 Improved IDE support and performance PomUtils for more concise poms when configuring maven publishing GitHub Actions CI SPDX licence headers 2.0 === - 2.0.12 Add GitHub Actions tasks, some clean-up and optimisations (#13) Add `ghActionsProjectVersion` task Add `ghActionsProjectInfoJson` task Example output string in the GH Actions env: `[{"group":"net.minecraftforge","version":"1.1.14","name":"MergeTool"}]` - 2.0.11 Add JDK and Gradle version parameters (#12) - 2.0.10 Create the changelog tasks at evaluation, register publications if request after evaluation. Should fix consumers that reference the changelog task - 2.0.9 Allow for the manual registration of publications which need to publish a changelog (#11) Allow for disabling the automatic changelog generation on all publications Update to Gradle 7.4.2 - 2.0.8 Fix changelog generation going through all commits (#10) - 2.0.7 Run changelog task setup after projectsEvaluated - 2.0.6 Fix a cornercase where the changelog generation fails if it originates from the first commit in a branch. (#9) - 2.0.5 Update the TC template to have a secondary build target. (#7) * Update the TC template to have a secondary build target. * Update the included TC Configuration. * Update the branches which are excluded from secondary branch building. * Match own configuration to the one included. * And update to the latest version of the CI template. * Implement fixes required to run default runtime tasks against a none maven-publish target. - 2.0.4 Add support for multiple organisations to the template generator. (#6) * Add support for multiple organisations to the template generator. * Setup git branch before configuring the build system - 2.0.3 Since seems to be exclusionary, so include the parent commit if it exists, since that'll be the one with the tag, when starting from a tag. - 2.0.2 OK, JGit isn't as poopy, but you need to force the ref through the refdb to get it "realized" if it's an annotated tag - 2.0.1 Handle annotated tags better? JGit is poopy. - 2.0.0 Enable the new TC pipeline. (#5) * Lazily implement task registration. Closes #4. Thanks Sci. Enable new CI pipeline. Log if fallback operations happen. Use the same Maven Extraction logic for groups. Exclude gradle plugin markers. Remove old TC Setup. Update to match the new TC configuration. * Remove Jenkinsfile. * Configure the CI tasks. * Write to the log if the variable is missing. * Using lifecycle logging. * Fix the derp. GU can not use the GU plugin directly. * Fix the derp. GU can not use the GU plugin directly. * Pin the docker version and set the JDk version to 8. Clean up a Typo for the URL lookup. 1.0 === - 1.0.23 Add support to generate the TeamCity project directory. (#3) * Add support for generating a default TeamCity project. * Disable the auto commit to test this properly. * Fix the delete check operating on the project directory and not on its teamcity subdirectory. * Enable direct commit on the projects own task. All ids have been successfully updated. * Remove auto commit functionality. It does not feel very clean. * Add TeamCity project. * Document the task. * A tiny bit more documentation. * Update the zip to match the new configuration names. * Change the naming scheme, because I derped. * Publishing to the correct URL and setting the correct template for TC. * Remove old TC setup. * Setup the new teamcity project. * Undo the change to the URL generated for publishing. - 1.0.22 TeamCity change in 'MinecraftForge / GradleUtils' project: runners of 'Build' build configuration were updated - 1.0.21 TeamCity change in 'MinecraftForge / GradleUtils' project: 'https://github.com/MinecraftForge/GradleUtils.git' VCS root was removed - 1.0.20 TeamCity change in 'MinecraftForge / GradleUtils' project: 'https://github.com/MinecraftForge/GradleUtils.git' VCS root was created - 1.0.19 Update build.gradle - 1.0.18 TeamCity change in 'MinecraftForge / GradleUtils' project: triggers of 'Build' build configuration were updated - 1.0.17 TeamCity change in 'MinecraftForge / GradleUtils' project: Versioned settings configuration updated - 1.0.16 TeamCity change in 'MinecraftForge / GradleUtils' project: Cleanup old configuration files - 1.0.15 TeamCity change in 'MinecraftForge / GradleUtils' project: Versioned settings configuration updated - 1.0.14 Fix J8 incompatibility (#2) - 1.0.13 Implement changelog generation. (#1) - 1.0.12 Update Gradle wrapper to 7.2 Fix an invalid comment because @zml told me to - 1.0.11 Remove `v` from start of tags in version info - 1.0.10 Add methods for getting a forge maven closure - 1.0.9 Allow tag filtering - 1.0.8 Remove null values from gitInfo map Gradle throws an obscure error if a map value is null in a MapProperty - 1.0.7 Publish plugin markers and use Gradle 7.1 Updated licenser to 0.6.1 Moved group id to `net.minecraftforge.gradleutils` for new publishings Use `gradlePlugin` extension - 1.0.6 Sanitize PR branches - 1.0.5 Sanitize branch names - 1.0.4 Add new helper methods and branch filtering - 1.0.3 Remove null check - 1.0.2 Turn into a plugin - 1.0.1 Make gradlew executable - 1.0.0 Initial git info work Add Jenkinsfile and use Gradle 7.0.2 Licenser currently doesn't have a functional release for Gradle 7.1 1.0-pre ======= - 1.0-pre-1 Initial commit