diff --git a/lib/manager/common.ts b/lib/manager/common.ts
index fc93f0af233760ba21934ed66ad716a201f6ffb8..044a5085673da59f06c2cdb6a9c7709570f23a75 100644
--- a/lib/manager/common.ts
+++ b/lib/manager/common.ts
@@ -40,6 +40,7 @@ export interface UpdateArtifactsConfig extends ManagerConfig {
   compatibility?: Record<string, string>;
   cacheDir?: string;
   composerIgnorePlatformReqs?: boolean;
+  currentValue?: string;
   postUpdateOptions?: string[];
   ignoreScripts?: boolean;
 
diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts
index bdd5b125262f616672b079d23b9bd6414a99d166..c6994b2843d54b9fd2a069115022fd0431a54cbc 100644
--- a/lib/manager/gradle-wrapper/artifacts.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts.spec.ts
@@ -39,8 +39,9 @@ function compareFile(file: string, path: string) {
 
 describe(getName(__filename), () => {
   ifSystemSupportsGradle(6).describe('real tests', () => {
+    jest.setTimeout(60 * 1000);
+
     beforeEach(async () => {
-      jest.setTimeout(5 * 60 * 1000);
       jest.resetAllMocks();
       await setUtilConfig(config);
       httpMock.setup();
@@ -48,7 +49,7 @@ describe(getName(__filename), () => {
     });
 
     afterEach(async () => {
-      await Git(config.localDir)?.checkout(['--', '.']);
+      await Git(fixtures)?.checkout(['HEAD', '--', '.']);
       httpMock.reset();
     });
 
@@ -63,7 +64,7 @@ describe(getName(__filename), () => {
       } as Git.StatusResult);
 
       const res = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
         newPackageFileContent: await readString(
           `./expectedFiles/gradle/wrapper/gradle-wrapper.properties`
@@ -105,7 +106,7 @@ describe(getName(__filename), () => {
       );
 
       const result = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
         newPackageFileContent: ``,
         config: { ...config, toVersion: '6.3' },
@@ -123,7 +124,7 @@ describe(getName(__filename), () => {
       } as Git.StatusResult);
 
       const res = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
         newPackageFileContent: await readString(
           `./testFiles/gradle/wrapper/gradle-wrapper.properties`
@@ -147,7 +148,7 @@ describe(getName(__filename), () => {
       });
 
       const res = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
         newPackageFileContent: await readString(
           `./testFiles/gradle/wrapper/gradle-wrapper.properties`
@@ -156,7 +157,7 @@ describe(getName(__filename), () => {
       });
 
       expect(res[0].artifactError.lockFile).toEqual(
-        'gradle-wrapper.properties'
+        'gradle/wrapper/gradle-wrapper.properties'
       );
       expect(res[0].artifactError.stderr).toEqual('failed');
 
@@ -218,12 +219,20 @@ describe(getName(__filename), () => {
           modified: ['gradle/wrapper/gradle-wrapper.properties'],
         })
       );
+      const newContent = await readString(`./gradle-wrapper-sum.properties`);
 
       const result = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
-        newPackageFileContent: `distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.3-bin.zip`,
-        config,
+        newPackageFileContent: newContent.replace(
+          '038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768',
+          '1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d'
+        ),
+        config: {
+          ...config,
+          toVersion: '6.3',
+          currentValue: '5.6.4',
+        },
       });
 
       expect(result).toHaveLength(1);
@@ -234,7 +243,7 @@ describe(getName(__filename), () => {
           config.localDir,
           `./gradle/wrapper/gradle-wrapper.properties`
         )
-      ).toEqual(await readString(`./gradle-wrapper-sum.properties`));
+      ).toEqual(newContent);
 
       expect(httpMock.getTrace()).toEqual([
         {
@@ -257,7 +266,7 @@ describe(getName(__filename), () => {
         .reply(404);
 
       const result = await dcUpdate.updateArtifacts({
-        packageFileName: 'gradle-wrapper.properties',
+        packageFileName: 'gradle/wrapper/gradle-wrapper.properties',
         updatedDeps: [],
         newPackageFileContent: `distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.3-bin.zip`,
         config,
@@ -266,7 +275,7 @@ describe(getName(__filename), () => {
       expect(result).toEqual([
         {
           artifactError: {
-            lockFile: 'gradle-wrapper.properties',
+            lockFile: 'gradle/wrapper/gradle-wrapper.properties',
             stderr: 'Response code 404 (Not Found)',
           },
         },
diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts
index df5aeedaa045869bcfb3e43cee969eea81784cff..f7d75d262b0bfca0cc51d7866d869e5cf63d03cc 100644
--- a/lib/manager/gradle-wrapper/artifacts.ts
+++ b/lib/manager/gradle-wrapper/artifacts.ts
@@ -5,7 +5,7 @@ import Git from 'simple-git/promise';
 import { logger } from '../../logger';
 import { platform } from '../../platform';
 import { ExecOptions, exec } from '../../util/exec';
-import { readLocalFile } from '../../util/fs';
+import { readLocalFile, writeLocalFile } from '../../util/fs';
 import { Http } from '../../util/http';
 import { UpdateArtifact, UpdateArtifactsResult } from '../common';
 import { gradleWrapperFileName, prepareGradleCommand } from '../gradle/index';
@@ -69,6 +69,11 @@ export async function updateArtifacts({
     if (distributionUrl) {
       cmd += ` --gradle-distribution-url ${distributionUrl}`;
       if (newPackageFileContent.includes('distributionSha256Sum=')) {
+        // need to reset version, otherwise we have a checksum missmatch
+        await writeLocalFile(
+          packageFileName,
+          newPackageFileContent.replace(config.toVersion, config.currentValue)
+        );
         const checksum = await getDistributionChecksum(distributionUrl);
         cmd += ` --gradle-distribution-sha256-sum ${checksum}`;
       }
@@ -84,6 +89,7 @@ export async function updateArtifacts({
     try {
       await exec(cmd, execOptions);
     } catch (err) {
+      // TODO: Is this an artifact error?
       logger.warn(
         { err },
         'Error executing gradle wrapper update command. It can be not a critical one though.'