Previously, only the permissions for the scripts in bin/ were set. The
permissions for the files in lib/ were not explicity set, leaving them
with the same permissions as the source files in Gradle's cache. This
has proven to be a little brittle when building in certain
environments, leading to test failures. It also assumes that the
file permissions in Gradle's cache will be appropriate for entries in
a distribution archive. That may not always be a reasonable assumption
to make.
To avoid the above-described problems, this commit updates the copy
spec that's used to add files to lib/ in the archive so that each
file uses 0644 for its permissions.
Closes gh-14158
Update the JAR `Hander` so that URL `startsWith` checks produce less
garbage. Comparisons are now performed first on the `path` rather than
the full `toString`. URL `toString` operations produce quite a lot of
garbage since a `StringBuilder` is always used.
In addition, we now also cache the JarFile URL toString to save repeated
calculation.
Closes gh-14561
This commit updates the annotation processor to write metadata in a
consistent way. Groups, properties and hints are written and each item
is ordered alphabetically based on its name.
Also, deprecated items are written last.
Closes gh-14347
Due to gradle/gradle#5510, using a lambda for a task action breaks
up-to-date checks in certain circumstances.
This commit updates JavaPluginAction to use an inner-class in place
of a lambda for the action that it adds to JavaCompile tasks. A test
has not been added as it does not appear to be possible to reproduce
it with a TestKit-based test.
Closes gh-14054
This commit adds support for Spring Framework's `DataSize` allowing to
express a size in bytes and other convenient units.
Similar to the `Duration` support introduced previously, this commit
adds transparent binding support as well as detection of default values
in `@ConfigurationProperties`-annotated object.
Closes gh-13974