master Changelog gradle-5.0.0-beta ================= - gradle-5.0.0-beta.8 Add `ArtifactAccessTransformer.Parameters#defaults` This helper method can be used when registering the transformer to set some defaults used by the default AccessTransformers tool. WARNING: Some of the parameters will not have their defaults set if the transform is registered after project evaluation! See the relevant JavaDoc comment for more details. - gradle-5.0.0-beta.7 Revert "Lift sealed restriction from AccessTransformersConfiguration" This reverts commit ec5a418028efa7305cf39a7da0e99e5b2c706c03. I decided it was unnecessary for my use-case, and I don't want to expose or make extensible public API without reason. - gradle-5.0.0-beta.6 Lift sealed restriction from AccessTransformersConfiguration This interface is not sealed since it is implemented by Forge Gradle for consumers to set the config file for the Minecraft dependency. Implementing this interface yourself is still highly discouraged. - gradle-5.0.0-beta.5 Finalize API and define clear limitations In order to play nice with Gradle's design and the concept of reproduceable builds, I've decided to set a limit on how much the API can help consumers with. Moving forward, there are two clearly defined ways you can use this plugin: 1. Use the API, which is quicker and does a lot of set up. The trade-off is that it is limited to using incoming dependency subtitutions, which can be problematic for complex setups. 2. Use the `ArtifactAccessTransformer` artifact transform class, which is public. Advanced Gradle users can use the transformer how they see fit. JavaDocs have been written to help with its usage, and the responsibility of how it is used rests solely on them. Additionally, here are some following rules when defining dependencies to be queued: - Dependencies *must* have a version specified, as per the requirement of dependency subtitutions. - Dependency constraints can be unversioned *if and only if* there exists a (transitive) dependency that can fulfill it. - gradle-5.0.0-beta.4 Fix ATs causing IDEs to lose source jars This was done by making the access transformer only target dependencies of type Usage: "library". Sources are of type Usage: "documentation". This problem is two-fold: 1. Gradle would access transform the sources, but wouldn't select it as an auxiliary artifact for the IDE. 2. IntelliJ would look for the auxiliary artifact but can't find it due to the variant change from Gradle transforming the artifact. This is a problem that would be fixed by gradle/gradle#35131. When it is, we can theoretically add support in AccessTransformers itself to transform `.java` files as well as `.class` files. - gradle-5.0.0-beta.3 Slightly optimize configuration resolution for ATs When a configuration is queried for resolution, it only checks its hierarchy for dependencies that have requested transformation instead of searching the entire project's configuration set. Note: This performance enhancement does not affect the configuration cache. - gradle-5.0.0-beta.2 Use dependency substitution rules instead of constraints Dependency substitutions are only considered and applied for incoming configurations. Consumable configurations are not affected and thus the attributes used to enforce AccessTransformers will not pollute the Gradle Module Metadata. This is important because it is theoretically possible for stray AccessTransformer attributes to either: 1. Cause a dependency lock-up for dependencies that have weird variants or complex resolutions. 2. Cause an incoming dependency with those attributes to have unwanted AccessTransformers applied to them. - gradle-5.0.0-beta.1 Update GradleUtils Shared to fix classpath issues - gradle-5.0.0-beta.0 Redesign API to be more like JarJar gradle-4.0 ========== - gradle-4.0.1 Added AccessTransformersContainer#getOptions Meant to do this in the last commit but completely forgot to re-apply the stash. Sorry about that. - gradle-4.0.0 Clean up code complexity Needs another major version bump due to aggressive API changes, especially in `AccessTransformerContainer`. Buildscript authors do not need to make any changes as Gradle generates the DSL for property setters. gradle-3.1 ========== - gradle-3.1.1 Relativize config file path in errors - gradle-3.1.0 Fail build on missing or empty config To enforce the usage of AccessTransformers when requested, the build will now fail if the requested AccessTransformers config file is not defined, cannot be found, or is empty. This validation will happen after project evaluation rather than at artifact transformation, because exceptions thrown by artifact transforms are consumed and don't fail the build. Also, added `AccessTransformerContainer#setLogLevel` to allow for viewing the output stream of AccessTransformers using a different log level. gradle-3.0 ========== - gradle-3.0.0 Support bundles, keep provider dependencies lazy Version bumped to 3.0.0 due to the heavily breaking binary and API changes. This was necessarily to progress ForgeGradle 7's development. gradle-2.0 ========== - gradle-2.0.0 gradle-2.0 - Update the plugin to use Java 17 and Gradle 9 - Modernize buildscript, Gradle 9, GradleUtils 3 - Require :at-gradle-demo:assemble to pass before publishing gradle-1.0 ========== - gradle-1.0.1 Fix gradle plugin failing when no toolchain version is declared - gradle-1.0.0 Port FG7's ATs to its own Gradle plugin Also: - Modernize buildscripts - Demo project (disabled for now)