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',