diff --git a/lib/manager/maven/update.js b/lib/manager/maven/update.js
index aabffbbdc3e282bbac44b1cb15a8ffaaf9378d56..64a91f7f4b66be928248e9ee566fb5164d0904d1 100644
--- a/lib/manager/maven/update.js
+++ b/lib/manager/maven/update.js
@@ -16,13 +16,10 @@ function updateAtPosition(fileContent, upgrade, endingAnchor = '"') {
   if (version === newValue) {
     return fileContent;
   }
-  if (version === currentValue) {
-    const replacedPart = versionPart.replace(currentValue, newValue);
+  if (version === currentValue || upgrade.groupName) {
+    const replacedPart = versionPart.replace(version, newValue);
     return leftPart + replacedPart + restPart;
   }
-  if (upgrade.groupName) {
-    return fileContent;
-  }
   logger.debug({ depName, version, currentValue, newValue }, 'Unknown value');
   return null;
 }
diff --git a/test/manager/maven/_fixtures/grouping.pom.xml b/test/manager/maven/_fixtures/grouping.pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..179f9f6451196bf352d19b28b7b934b3cb1147dd
--- /dev/null
+++ b/test/manager/maven/_fixtures/grouping.pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.example</groupId>
+  <artifactId>ExamplePomFile</artifactId>
+
+  <properties>
+    <foo.version>1.0.0</foo.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.example</groupId>
+      <artifactId>foo-1</artifactId>
+      <version>${foo.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.example</groupId>
+      <artifactId>foo-2</artifactId>
+      <version>${foo.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.example</groupId>
+      <artifactId>bar</artifactId>
+      <version>2.0.0</version>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/test/manager/maven/index.spec.js b/test/manager/maven/index.spec.js
index 9f4edf4a99231ae56fa580cf31e1203d08a5d2d2..412a1b27dc0f21b8c1ff2031e0f6ae4fbc465bb1 100644
--- a/test/manager/maven/index.spec.js
+++ b/test/manager/maven/index.spec.js
@@ -23,6 +23,10 @@ const pomChild = fs.readFileSync(
   'test/manager/maven/_fixtures/child.pom.xml',
   'utf8'
 );
+const origContent = fs.readFileSync(
+  'test/manager/maven/_fixtures/grouping.pom.xml',
+  'utf8'
+);
 
 function selectDep(deps, name = 'org.example:quuz') {
   return deps.find(dep => dep.depName === name);
@@ -95,24 +99,46 @@ describe('manager/maven', () => {
       expect(pomContent).toBe(updatedContent);
     });
 
-    it('should not touch content for the second update of grouped dependency', async () => {
-      platform.getFile.mockReturnValueOnce(pomContent);
+    it('should update to version of the latest dep in implicit group', async () => {
+      platform.getFile.mockReturnValueOnce(origContent);
       const [{ deps }] = await extractAllPackageFiles({}, ['pom.xml']);
-      const dep1 = selectDep(deps, 'org.example:quux');
-      const dep2 = selectDep(deps, 'org.example:quux-test');
 
-      const upgrade1 = { ...dep1, newValue: '2.0.0', groupName: 'quuxVersion' };
-      const previouslyUpdatedContent = updateDependency(pomContent, upgrade1);
-      expect(previouslyUpdatedContent).toEqual(
-        pomContent.replace('1.2.3.4', '2.0.0')
+      const dep1 = selectDep(deps, 'org.example:foo-1');
+      const upgrade1 = { ...dep1, newValue: '1.0.2' };
+
+      const dep2 = selectDep(deps, 'org.example:foo-2');
+      const upgrade2 = { ...dep2, newValue: '1.0.3' };
+
+      const updatedOutside = origContent.replace('1.0.0', '1.0.1');
+
+      expect(updateDependency(origContent, upgrade1)).toEqual(
+        origContent.replace('1.0.0', '1.0.2')
+      );
+      expect(updateDependency(updatedOutside, upgrade1)).toEqual(
+        origContent.replace('1.0.0', '1.0.2')
+      );
+
+      const updatedByPrevious = updateDependency(origContent, upgrade1);
+
+      expect(updateDependency(updatedByPrevious, upgrade2)).toEqual(
+        origContent.replace('1.0.0', '1.0.3')
+      );
+      expect(updateDependency(updatedOutside, upgrade2)).toEqual(
+        origContent.replace('1.0.0', '1.0.3')
       );
 
-      const upgrade2 = { ...dep2, newValue: '1.9.9', groupName: 'quuxVersion' };
-      const updatedContent = updateDependency(
-        previouslyUpdatedContent,
-        upgrade2
+      expect(updateDependency(origContent, upgrade2)).toEqual(
+        origContent.replace('1.0.0', '1.0.3')
       );
-      expect(updatedContent).toBe(previouslyUpdatedContent);
+    });
+
+    it('should return null for ungrouped deps if content was updated outside', async () => {
+      platform.getFile.mockReturnValueOnce(origContent);
+      const [{ deps }] = await extractAllPackageFiles({}, ['pom.xml']);
+      const dep = selectDep(deps, 'org.example:bar');
+      const upgrade = { ...dep, newValue: '2.0.2' };
+      const updatedOutside = origContent.replace('2.0.0', '2.0.1');
+      expect(updateDependency(updatedOutside, upgrade)).toBeNull();
     });
 
     it('should return null if current versions in content and upgrade are not same', () => {