diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9953c8e10896085ab3c0e7f90f29d94a868ab1a9
--- /dev/null
+++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+# @See https://gradle.org/releases/
+distributionUrl=https\://artifactory/gradle-wrapper-cache/distributions/gradle-4.8-bin.zip
+distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043
diff --git a/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap b/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap
index c79a1881cef7ddbee546f61bb06acd8a704da47c..576ae8c81a2794a35c43d39d2c60e1ca28d3aa1c 100644
--- a/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap
+++ b/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap
@@ -1,5 +1,16 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`manager/gradle-wrapper/update updateDependency replaces existing value (custom distributionUrl) 1`] = `
+"distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+# @See https://gradle.org/releases/
+distributionUrl=https\\\\://artifactory/gradle-wrapper-cache/distributions/gradle-5.0-bin.zip
+distributionSha256Sum=17847c8e12b2bcfce26a79f425f082c31d4ded822f99a66127eee2d96bf18216
+"
+`;
+
 exports[`manager/gradle-wrapper/update updateDependency replaces existing value 1`] = `
 "distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
diff --git a/lib/manager/gradle-wrapper/search.ts b/lib/manager/gradle-wrapper/search.ts
index d046f3e2d1ab88b399b5793d03b10fd9f3716e6a..2470a71db76f65d124f3ef2ec0b8995816765606 100644
--- a/lib/manager/gradle-wrapper/search.ts
+++ b/lib/manager/gradle-wrapper/search.ts
@@ -1,2 +1,4 @@
 export const DISTRIBUTION_URL_REGEX = /^(?<assignment>distributionUrl\s*=\s*)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/;
 export const DISTRIBUTION_CHECKSUM_REGEX = /^(?<assignment>distributionSha256Sum\s*=\s*)(?<checksum>(\w){64}).*$/;
+export const DOWNLOAD_URL_REGEX = /^(?<http>http)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/;
+export const VERSION_REGEX = /-(?<version>(\d|\.)+)-/;
diff --git a/lib/manager/gradle-wrapper/update.spec.ts b/lib/manager/gradle-wrapper/update.spec.ts
index bf13af66d6ce8696fe15487012fe18794e4e8136..9e18ac17adb212f836aef2124b5cf08d5677a4cb 100644
--- a/lib/manager/gradle-wrapper/update.spec.ts
+++ b/lib/manager/gradle-wrapper/update.spec.ts
@@ -11,6 +11,10 @@ const propertiesFile2 = fs.readFileSync(
   'lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-2.properties',
   'utf8'
 );
+const propertiesFileCustomDistUrl = fs.readFileSync(
+  'lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties',
+  'utf8'
+);
 const whitespacePropertiesFile = readFileSync(
   resolve(__dirname, './__fixtures__/gradle-wrapper-whitespace.properties'),
   'utf8'
@@ -75,6 +79,23 @@ describe('manager/gradle-wrapper/update', () => {
       expect(res).toMatch(testUpgrades[5].checksum);
     });
 
+    it('replaces existing value (custom distributionUrl)', async () => {
+      got.mockReturnValueOnce({
+        body: testUpgrades[5].checksum,
+      });
+      const res = await dcUpdate.updateDependency({
+        fileContent: propertiesFileCustomDistUrl,
+        upgrade: testUpgrades[5].data,
+      });
+      expect(res).toMatchSnapshot();
+      expect(res).not.toBeNull();
+      expect(res).not.toEqual(propertiesFileCustomDistUrl);
+      expect(res).toMatch(
+        'https\\://artifactory/gradle-wrapper-cache/distributions/gradle-5.0-bin.zip'
+      );
+      expect(res).toMatch(testUpgrades[5].checksum);
+    });
+
     it('replaces in property files with whitespace', async () => {
       got.mockReturnValueOnce({
         body: testUpgrades[5].checksum,
diff --git a/lib/manager/gradle-wrapper/update.ts b/lib/manager/gradle-wrapper/update.ts
index 4911d45d3779b41ea0ed8fdd95e0ceb0785497ca..fe9e77d6120b7438905114f93bca94a715967d57 100644
--- a/lib/manager/gradle-wrapper/update.ts
+++ b/lib/manager/gradle-wrapper/update.ts
@@ -1,7 +1,11 @@
 import got from '../../util/got';
 import { logger } from '../../logger';
 import { UpdateDependencyConfig } from '../common';
-import { DISTRIBUTION_CHECKSUM_REGEX, DISTRIBUTION_URL_REGEX } from './search';
+import {
+  DISTRIBUTION_CHECKSUM_REGEX,
+  DOWNLOAD_URL_REGEX,
+  VERSION_REGEX,
+} from './search';
 
 function replaceType(url: string): string {
   return url.replace('bin', 'all');
@@ -41,7 +45,10 @@ export async function updateDependency({
 
     lines[upgrade.managerData.lineNumber] = lines[
       upgrade.managerData.lineNumber
-    ].replace(DISTRIBUTION_URL_REGEX, `$<assignment>${downloadUrl}`);
+    ].replace(
+      VERSION_REGEX,
+      `-${DOWNLOAD_URL_REGEX.exec(downloadUrl).groups.version}-`
+    );
 
     if (upgrade.managerData.checksumLineNumber) {
       lines[upgrade.managerData.checksumLineNumber] = lines[