szczepan faber <> in Gradle

Mentioned contribution in the release notes

Signed-off-by: Szczepan Faber <>

    • -0
    • +1
Addressed code review feedback

Environment variables are not supported in debug mode.

Started throwing meaningful exception to indicate this.

Signed-off-by: Szczepan Faber <>

Support for env variables in TestKit

Fixes #6070

Impl notes:

- it is ok to pass 'null' env variables to the launcher because it will handle them correctly (org/gradle/tooling/internal/provider/

- there is already coverage for env variables in tooling API: BuildEnvironmentCrossVersionSpec

- daemon uses System.getenv() by default and this PR does not change it. References:

- org/gradle/launcher/daemon/configuration/

- org/gradle/launcher/daemon/configuration/

Signed-off-by: Szczepan Faber <>

Fixed play plugin duplicate artifact error (#1857) (#1879)

* Fixed play plugin duplicate artifact error (#1857)

1. Fix for duplicate artifact error "Could not copy MANIFEST.MF / Multiple entries with same key".

After building Gradle with this fix, we're able to build "dist" for the small repro project.

The repro project is attached to the issue #1857.

2. I hope you can wrap it with all the necessary integ test / unit test coverage as needed

because it would be much easier for someone in Gradle team to do it :)

I hope it's fair to give you the fix that works plus clean repro project!

3. Regarding the change from immutable Guava type to standard HashMap:

the field is internal and lightly used so keeping it formally immutable does not bring a lot of value.

This particular Guava type is not optimized for speed but for immutability.

The artifact "rename" value is a exactly the same (we debugged to inspect).

Therefore, it is safe to just replace the value if the key is present.

Simple solution that works :)

Fixed flaky test

Added more memory to the passing test so that there is no chance performance is regressed in all test runs. Otherwise this test was flaky on windows. I've investigated the failures on windows and raising memory feels like a good solution to this problem.

GRADLE-3214 FindBugs crash / build hanging

Ensured that FindBugs client catches all kinds of Throwables. This fixes the problem of stalled build when FindBugs crashes.

Added candidate spec for caching resolve results in daemon process

    • -0
    • +38
Added classloader caching to the release notes

    • -3
    • +17
Added daemon hygiene information to the release notes

    • -2
    • +23
Daemon hygiene: fixed the integ test and tweaked the defaults

Let's see if the CI likes this change.

Little perf tweak for extra properties dynamic object

It does not support method/property missing. This change avoids extra MethodMissingExceptions to be triggered and makes configuration a bit faster on large projects.

Invalidation of cached classloaders - fixed an integ test

+review REVIEW-5219

Invalidation of cached classloaders - documentation

+review REVIEW-5219

Ensured class loader cache is thread safe

+review REVIEW-5219

Invalidation of cached classloaders - documentation, coverage tidy-up

+review REVIEW-5219

Invalidation of cached classloaders - documentation

+review REVIEW-5219

Invalidation of cached classloaders - tidy-up

Ensured the ClassLoaderId has correct equality behavior

+review REVIEW-5219

Invalidation of cached classloaders - tidy-up

Modelled the ClassLoaderId instead of using the String

+review REVIEW-5219

Invalidation of cached classloaders - basic invalidation is in place

Tidy-up and documentation is pending

+review REVIEW-5219

Invalidation of cached classloaders - started adding classloader id

In order to invalidate the classloaders correctly we need to understand "what" is the classloader that the client of cache requests.

+review REVIEW-5219

Documented useDepend problem

Simplified the class loader scope impl

Started using default classpath impl to conveniently concatenate classpaths. This way we can avoid creating more multi-parent classloaders.

Invalidation of cached classloaders - map instead of guava cache

It is simpler to implement invalidation if we just simple map instead of guava cache. We don't need guava features at the moment anyway.

+review REVIEW-5219

Invalidation of cached classloaders - added basic classloader id for hierarchy

The classloader identifer in the classloader scope is automatically computed based on the position in the hierarchy

+review REVIEW-5219

Invalidation of cached classloaders - integ test

Added validation of the classloader cache size. The size should not grow when user performs standard operations. The test fails for now.

+review REVIEW-5219

Improved error message.

Added TODOs

GRADLE-2841 Ensured capturing output is thread safe

This resolves the issue with the flakiness of TestNGParallelSuiteIntegrationTest

Changed default expire threshold for the daemon until I figure out ci failures

Busted complexity to separate classes to simplify testing and kill a shamock test I contributed when I was young and stupid