diff --git a/lib/modules/manager/maven/__fixtures__/simple.pom.xml b/lib/modules/manager/maven/__fixtures__/simple.pom.xml
index 46de0f9cede51201e28a4a34a6c680580e3b363b..d4ff6503cf42ca72d1dbbbf0e0ff90ff7fddd752 100644
--- a/lib/modules/manager/maven/__fixtures__/simple.pom.xml
+++ b/lib/modules/manager/maven/__fixtures__/simple.pom.xml
@@ -132,6 +132,12 @@
       <artifactId>hard-range</artifactId>
       <version>[1.0.0]</version>
     </dependency>
+    <dependency>
+      <groupId>org.example</groupId>
+      <artifactId>optional</artifactId>
+      <version>1.0.0</version>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 
   <distributionManagement>
diff --git a/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
index fc55da77b119d7dd4e2d1703da9b0e51ca28c17f..8862b7d616bebafcdd5c2c81ba8a228b73c5cee6 100644
--- a/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/maven/__snapshots__/extract.spec.ts.snap
@@ -147,11 +147,22 @@ Object {
         "https://maven.atlassian.com/content/repositories/atlassian-public/",
       ],
     },
+    Object {
+      "currentValue": "1.0.0",
+      "datasource": "maven",
+      "depName": "org.example:optional",
+      "depType": "optional",
+      "fileReplacePosition": 3555,
+      "registryUrls": Array [
+        "https://repo.maven.apache.org/maven2",
+        "https://maven.atlassian.com/content/repositories/atlassian-public/",
+      ],
+    },
     Object {
       "currentValue": "1.0",
       "datasource": "maven",
       "depName": "org.example:relocation-artifact",
-      "fileReplacePosition": 3612,
+      "fileReplacePosition": 3787,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
         "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -162,7 +173,7 @@ Object {
       "datasource": "maven",
       "depName": "org.example:profile-artifact",
       "depType": "compile",
-      "fileReplacePosition": 3944,
+      "fileReplacePosition": 4119,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
         "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -173,7 +184,7 @@ Object {
       "datasource": "maven",
       "depName": "org.example:profile-build-artefact",
       "depType": "build",
-      "fileReplacePosition": 4200,
+      "fileReplacePosition": 4375,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
         "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -184,7 +195,7 @@ Object {
       "datasource": "maven",
       "depName": "org.apache.maven.plugins:maven-checkstyle-plugin",
       "depType": "build",
-      "fileReplacePosition": 4594,
+      "fileReplacePosition": 4769,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
         "https://maven.atlassian.com/content/repositories/atlassian-public/",
diff --git a/lib/modules/manager/maven/__snapshots__/index.spec.ts.snap b/lib/modules/manager/maven/__snapshots__/index.spec.ts.snap
index 044d08501fe1d73618f890a94f29856c6ca541d9..70030a4f34825e5ae271233d091f7719cda398c2 100644
--- a/lib/modules/manager/maven/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/manager/maven/__snapshots__/index.spec.ts.snap
@@ -152,11 +152,22 @@ Array [
           "https://maven.atlassian.com/content/repositories/atlassian-public/",
         ],
       },
+      Object {
+        "currentValue": "1.0.0",
+        "datasource": "maven",
+        "depName": "org.example:optional",
+        "depType": "optional",
+        "fileReplacePosition": 3555,
+        "registryUrls": Array [
+          "https://repo.maven.apache.org/maven2",
+          "https://maven.atlassian.com/content/repositories/atlassian-public/",
+        ],
+      },
       Object {
         "currentValue": "1.0",
         "datasource": "maven",
         "depName": "org.example:relocation-artifact",
-        "fileReplacePosition": 3612,
+        "fileReplacePosition": 3787,
         "registryUrls": Array [
           "https://repo.maven.apache.org/maven2",
           "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -167,7 +178,7 @@ Array [
         "datasource": "maven",
         "depName": "org.example:profile-artifact",
         "depType": "compile",
-        "fileReplacePosition": 3944,
+        "fileReplacePosition": 4119,
         "registryUrls": Array [
           "https://repo.maven.apache.org/maven2",
           "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -179,7 +190,7 @@ Array [
         "datasource": "maven",
         "depName": "org.example:profile-build-artefact",
         "depType": "build",
-        "fileReplacePosition": 4200,
+        "fileReplacePosition": 4375,
         "registryUrls": Array [
           "https://repo.maven.apache.org/maven2",
           "https://maven.atlassian.com/content/repositories/atlassian-public/",
@@ -190,7 +201,7 @@ Array [
         "datasource": "maven",
         "depName": "org.apache.maven.plugins:maven-checkstyle-plugin",
         "depType": "build",
-        "fileReplacePosition": 4594,
+        "fileReplacePosition": 4769,
         "registryUrls": Array [
           "https://repo.maven.apache.org/maven2",
           "https://maven.atlassian.com/content/repositories/atlassian-public/",
diff --git a/lib/modules/manager/maven/extract.spec.ts b/lib/modules/manager/maven/extract.spec.ts
index 60f925a75853a3db0e67fa2babe70ceab71c986a..5d26683b3d014c3dfc2b33c07bb118f4f69c2962 100644
--- a/lib/modules/manager/maven/extract.spec.ts
+++ b/lib/modules/manager/maven/extract.spec.ts
@@ -86,6 +86,11 @@ describe('modules/manager/maven/extract', () => {
             currentValue: '[1.0.0]',
             depType: 'compile',
           },
+          {
+            depName: 'org.example:optional',
+            currentValue: '1.0.0',
+            depType: 'optional',
+          },
           {
             depName: 'org.example:relocation-artifact',
             currentValue: '1.0',
diff --git a/lib/modules/manager/maven/extract.ts b/lib/modules/manager/maven/extract.ts
index 22960d0712416c6fa3a80236f97a1da7f8f52b74..5f80d4bdb2ae128e3dd0f28e11bdc02e7f084131 100644
--- a/lib/modules/manager/maven/extract.ts
+++ b/lib/modules/manager/maven/extract.ts
@@ -77,6 +77,8 @@ function depFromNode(
       case 'dependency':
         if (underBuildSettingsElement) {
           depType = 'build';
+        } else if (node.valueWithPath('optional')?.trim() === 'true') {
+          depType = 'optional';
         } else {
           depType = node.valueWithPath('scope')?.trim() ?? 'compile'; // maven default scope is compile
         }
diff --git a/lib/modules/manager/maven/index.spec.ts b/lib/modules/manager/maven/index.spec.ts
index 3cdc1c070c74962e7b80e89794519a8e8b63d58e..592c74da21bb8e6822f3f99a619b52e380e76278 100644
--- a/lib/modules/manager/maven/index.spec.ts
+++ b/lib/modules/manager/maven/index.spec.ts
@@ -104,6 +104,10 @@ describe('modules/manager/maven/index', () => {
               currentValue: "it's not a version",
             },
             { depName: 'org.example:hard-range', currentValue: '[1.0.0]' },
+            {
+              depName: 'org.example:optional',
+              currentValue: '1.0.0',
+            },
             {
               depName: 'org.example:relocation-artifact',
               currentValue: '1.0',