diff --git a/lib/manager/maven/extract.ts b/lib/manager/maven/extract.ts index 4484dad38a4cbe76548a08d4abfc6a69676ffb59..d8328124d7afea5622a484fb65248609078d11cb 100644 --- a/lib/manager/maven/extract.ts +++ b/lib/manager/maven/extract.ts @@ -1,3 +1,4 @@ +import is from '@sindresorhus/is'; import { basename, dirname, normalize, join } from 'path'; import { XmlDocument, XmlElement } from 'xmldoc'; import { isValid } from '../../versioning/maven'; @@ -14,10 +15,16 @@ export function parsePom(raw: string): XmlDocument | null { } catch (e) { return null; } - const { name, attr } = project; + const { name, attr, children } = project; if (name !== 'project') return null; - if (attr.xmlns !== 'http://maven.apache.org/POM/4.0.0') return null; - return project; + if (attr.xmlns === 'http://maven.apache.org/POM/4.0.0') return project; + if ( + is.nonEmptyArray(children) && + children.some((c: any) => c.name === 'modelVersion' && c.val === '4.0.0') + ) { + return project; + } + return null; } export function containsPlaceholder(str: string): boolean { diff --git a/test/manager/maven/__snapshots__/extract.spec.ts.snap b/test/manager/maven/__snapshots__/extract.spec.ts.snap index 29929e446dd7334f3859946b497e474baa2b7ea0..05e299a0d329812271b862ef19eee0b23c065cfb 100644 --- a/test/manager/maven/__snapshots__/extract.spec.ts.snap +++ b/test/manager/maven/__snapshots__/extract.spec.ts.snap @@ -165,3 +165,12 @@ Object { "packageFile": null, } `; + +exports[`manager/maven/extract extractDependencies tries minimum manifests 1`] = ` +Object { + "datasource": "maven", + "deps": Array [], + "mavenProps": Object {}, + "packageFile": null, +} +`; diff --git a/test/manager/maven/_fixtures/minimum.pom.xml b/test/manager/maven/_fixtures/minimum.pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab3fb49d84b3a88b00632d08d2580f52981e151d --- /dev/null +++ b/test/manager/maven/_fixtures/minimum.pom.xml @@ -0,0 +1,6 @@ +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>com.mycompany.app</groupId> + <artifactId>my-app</artifactId> + <version>1</version> +</project> diff --git a/test/manager/maven/extract.spec.ts b/test/manager/maven/extract.spec.ts index 3447194b61758d0e2b8ebd85f546d7c0872dea07..b209b002591e7f3f49c213eea3b404a6a37f4407 100644 --- a/test/manager/maven/extract.spec.ts +++ b/test/manager/maven/extract.spec.ts @@ -3,6 +3,11 @@ import { readFileSync } from 'fs'; import { resolve } from 'path'; import { extractPackage } from '../../../lib/manager/maven/extract'; +const minimumContent = readFileSync( + resolve(__dirname, `./_fixtures/minimum.pom.xml`), + 'utf8' +); + const simpleContent = readFileSync( resolve(__dirname, `./_fixtures/simple.pom.xml`), 'utf8' @@ -21,5 +26,9 @@ describe('manager/maven/extract', () => { const res = extractPackage(simpleContent); expect(res).toMatchSnapshot(); }); + it('tries minimum manifests', () => { + const res = extractPackage(minimumContent); + expect(res).toMatchSnapshot(); + }); }); });