fad-checker 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CLAUDE.md +126 -0
  2. package/README.md +279 -0
  3. package/completions/fad-check.bash +23 -0
  4. package/completions/fad-check.zsh +27 -0
  5. package/data/cpe-coord-map.json +112 -0
  6. package/data/eol-mapping.json +34 -0
  7. package/data/known-obsolete.json +142 -0
  8. package/data/known-public-namespaces.json +79 -0
  9. package/docs/ARCHITECTURE.md +152 -0
  10. package/docs/USAGE.md +179 -0
  11. package/fad-check.js +665 -0
  12. package/lib/cache-archive.js +107 -0
  13. package/lib/config.js +87 -0
  14. package/lib/core.js +317 -0
  15. package/lib/cpe.js +287 -0
  16. package/lib/cve-download.js +369 -0
  17. package/lib/cve-match.js +228 -0
  18. package/lib/cve-report.js +1455 -0
  19. package/lib/maven-repo.js +134 -0
  20. package/lib/maven-version.js +153 -0
  21. package/lib/npm/collect.js +224 -0
  22. package/lib/npm/parse.js +291 -0
  23. package/lib/nvd.js +239 -0
  24. package/lib/osv.js +298 -0
  25. package/lib/outdated.js +265 -0
  26. package/lib/retire.js +211 -0
  27. package/lib/scan-completeness.js +67 -0
  28. package/lib/snyk.js +127 -0
  29. package/lib/transitive.js +410 -0
  30. package/package.json +35 -0
  31. package/test/core.test.js +153 -0
  32. package/test/cpe.test.js +148 -0
  33. package/test/cve-download.test.js +39 -0
  34. package/test/cve-match.test.js +108 -0
  35. package/test/cve-report.test.js +79 -0
  36. package/test/fixtures/complex-enterprise/api/pom.xml +32 -0
  37. package/test/fixtures/complex-enterprise/build/pom.xml +46 -0
  38. package/test/fixtures/complex-enterprise/dao/pom.xml +37 -0
  39. package/test/fixtures/complex-enterprise/pom.xml +66 -0
  40. package/test/fixtures/complex-enterprise/web/pom.xml +77 -0
  41. package/test/fixtures/cve-samples/cve-non-java.json +19 -0
  42. package/test/fixtures/cve-samples/cve-product-only.json +31 -0
  43. package/test/fixtures/cve-samples/cve-with-packagename.json +37 -0
  44. package/test/fixtures/cve-samples/nvd-log4shell.json +40 -0
  45. package/test/fixtures/cve-samples/nvd-npm-lodash.json +22 -0
  46. package/test/fixtures/monorepo-mixed/libs/common-bom/pom.xml +26 -0
  47. package/test/fixtures/monorepo-mixed/packages/cli/package.json +14 -0
  48. package/test/fixtures/monorepo-mixed/packages/cli/yarn.lock +41 -0
  49. package/test/fixtures/monorepo-mixed/packages/no-lock/package.json +9 -0
  50. package/test/fixtures/monorepo-mixed/packages/web-app/package-lock.json +71 -0
  51. package/test/fixtures/monorepo-mixed/packages/web-app/package.json +17 -0
  52. package/test/fixtures/monorepo-mixed/pom.xml +29 -0
  53. package/test/fixtures/monorepo-mixed/services/api/pom.xml +27 -0
  54. package/test/fixtures/monorepo-mixed/services/worker/pom.xml +28 -0
  55. package/test/fixtures/private-lib-detection/core/pom.xml +26 -0
  56. package/test/fixtures/private-lib-detection/plugin/pom.xml +23 -0
  57. package/test/fixtures/private-lib-detection/pom.xml +35 -0
  58. package/test/fixtures/simple/app/pom.xml +28 -0
  59. package/test/fixtures/simple/lib/pom.xml +18 -0
  60. package/test/fixtures/simple/pom.xml +24 -0
  61. package/test/maven-repo.test.js +111 -0
  62. package/test/maven-version.test.js +48 -0
  63. package/test/monorepo.test.js +132 -0
  64. package/test/npm.test.js +146 -0
  65. package/test/outdated.test.js +56 -0
  66. package/test/snyk.test.js +64 -0
  67. package/test/transitive.test.js +305 -0
@@ -0,0 +1,31 @@
1
+ {
2
+ "cveMetadata": {
3
+ "cveId": "CVE-2017-5638",
4
+ "datePublished": "2017-03-10T00:00:00Z"
5
+ },
6
+ "containers": {
7
+ "cna": {
8
+ "descriptions": [
9
+ { "lang": "en", "value": "Apache Struts 2 Jakarta Multipart parser arbitrary OS command execution." }
10
+ ],
11
+ "metrics": [
12
+ {
13
+ "cvssV3_1": {
14
+ "baseScore": 9.8,
15
+ "baseSeverity": "CRITICAL"
16
+ }
17
+ }
18
+ ],
19
+ "affected": [
20
+ {
21
+ "vendor": "apache",
22
+ "product": "struts2-core",
23
+ "versions": [
24
+ { "version": "2.3.5", "status": "affected", "lessThan": "2.3.32", "versionType": "maven" },
25
+ { "version": "2.5.0", "status": "affected", "lessThan": "2.5.10.1", "versionType": "maven" }
26
+ ]
27
+ }
28
+ ]
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "cveMetadata": {
3
+ "cveId": "CVE-2021-44228",
4
+ "datePublished": "2021-12-10T00:00:00Z"
5
+ },
6
+ "containers": {
7
+ "cna": {
8
+ "descriptions": [
9
+ { "lang": "en", "value": "Apache Log4j2 JNDI features used in configuration do not protect against attacker controlled LDAP and other JNDI related endpoints. (Log4Shell)" }
10
+ ],
11
+ "metrics": [
12
+ {
13
+ "cvssV3_1": {
14
+ "baseScore": 10.0,
15
+ "baseSeverity": "CRITICAL"
16
+ }
17
+ }
18
+ ],
19
+ "affected": [
20
+ {
21
+ "vendor": "apache",
22
+ "product": "log4j-core",
23
+ "packageName": "org.apache.logging.log4j:log4j-core",
24
+ "collectionURL": "https://repo.maven.apache.org/maven2",
25
+ "versions": [
26
+ {
27
+ "version": "2.0",
28
+ "status": "affected",
29
+ "versionType": "maven",
30
+ "lessThan": "2.15.0"
31
+ }
32
+ ]
33
+ }
34
+ ]
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "CVE-2021-44228",
3
+ "published": "2021-12-10T00:00:00Z",
4
+ "lastModified": "2022-04-01T00:00:00Z",
5
+ "descriptions": [
6
+ { "lang": "en", "value": "Apache Log4j2 JNDI features used in configuration do not protect against attacker controlled LDAP and other JNDI related endpoints." }
7
+ ],
8
+ "metrics": {
9
+ "cvssMetricV31": [
10
+ {
11
+ "cvssData": {
12
+ "baseScore": 10.0,
13
+ "baseSeverity": "CRITICAL",
14
+ "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
15
+ }
16
+ }
17
+ ]
18
+ },
19
+ "references": [
20
+ { "url": "https://logging.apache.org/log4j/2.x/security.html", "tags": ["Vendor Advisory"] }
21
+ ],
22
+ "configurations": [
23
+ {
24
+ "operator": "OR",
25
+ "nodes": [
26
+ {
27
+ "operator": "OR",
28
+ "cpeMatch": [
29
+ {
30
+ "vulnerable": true,
31
+ "criteria": "cpe:2.3:a:apache:log4j:*:*:*:*:*:*:*:*",
32
+ "versionStartIncluding": "2.0.0",
33
+ "versionEndExcluding": "2.15.0"
34
+ }
35
+ ]
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "CVE-2019-10744",
3
+ "published": "2019-07-26T00:00:00Z",
4
+ "descriptions": [{ "lang": "en", "value": "Prototype pollution in lodash defaultsDeep." }],
5
+ "metrics": {
6
+ "cvssMetricV31": [{ "cvssData": { "baseScore": 9.1, "baseSeverity": "CRITICAL", "vectorString": "CVSS:3.1/AV:N" } }]
7
+ },
8
+ "references": [{ "url": "https://github.com/lodash/lodash/pull/4336", "tags": ["Patch"] }],
9
+ "configurations": [
10
+ {
11
+ "operator": "OR",
12
+ "nodes": [
13
+ {
14
+ "operator": "OR",
15
+ "cpeMatch": [
16
+ { "vulnerable": true, "criteria": "cpe:2.3:a:lodash:lodash:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "4.17.12" }
17
+ ]
18
+ }
19
+ ]
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.acme</groupId>
6
+ <artifactId>monorepo-parent</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>../../pom.xml</relativePath>
9
+ </parent>
10
+ <artifactId>common-bom</artifactId>
11
+ <packaging>pom</packaging>
12
+ <dependencyManagement>
13
+ <dependencies>
14
+ <dependency>
15
+ <groupId>com.fasterxml.jackson.core</groupId>
16
+ <artifactId>jackson-databind</artifactId>
17
+ <version>${jackson.version}</version>
18
+ </dependency>
19
+ <dependency>
20
+ <groupId>org.apache.logging.log4j</groupId>
21
+ <artifactId>log4j-core</artifactId>
22
+ <version>${log4j.version}</version>
23
+ </dependency>
24
+ </dependencies>
25
+ </dependencyManagement>
26
+ </project>
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@acme/cli",
3
+ "version": "0.5.0",
4
+ "private": true,
5
+ "dependencies": {
6
+ "minimist": "1.2.5",
7
+ "node-fetch": "2.6.6",
8
+ "chalk": "4.1.2",
9
+ "@acme/private-utils": "1.0.0"
10
+ },
11
+ "devDependencies": {
12
+ "mocha": "9.0.0"
13
+ }
14
+ }
@@ -0,0 +1,41 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@acme/private-utils@1.0.0":
6
+ version "1.0.0"
7
+ resolved "https://npm.acme.internal/@acme/private-utils/-/private-utils-1.0.0.tgz"
8
+ integrity sha512-private-fake-hash
9
+
10
+ chalk@4.1.2:
11
+ version "4.1.2"
12
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz"
13
+ integrity sha512-fake-chalk-hash
14
+ dependencies:
15
+ ansi-styles "^4.1.0"
16
+ supports-color "^7.1.0"
17
+
18
+ ansi-styles@^4.1.0:
19
+ version "4.3.0"
20
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
21
+ integrity sha512-fake-ansi-hash
22
+
23
+ supports-color@^7.1.0:
24
+ version "7.2.0"
25
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz"
26
+ integrity sha512-fake-supports-hash
27
+
28
+ mocha@9.0.0:
29
+ version "9.0.0"
30
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.0.0.tgz"
31
+ integrity sha512-fake-mocha-hash
32
+
33
+ minimist@1.2.5:
34
+ version "1.2.5"
35
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz"
36
+ integrity sha512-fake-minimist-hash
37
+
38
+ node-fetch@2.6.6:
39
+ version "2.6.6"
40
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz"
41
+ integrity sha512-fake-nodefetch-hash
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@acme/no-lock",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "dependencies": {
6
+ "left-pad": "^1.0.0",
7
+ "chalk": "^4.0.0"
8
+ }
9
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@acme/web-app",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@acme/web-app",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "axios": "0.21.0",
12
+ "lodash": "4.17.15",
13
+ "express": "4.17.1"
14
+ },
15
+ "devDependencies": {
16
+ "jest": "27.0.0",
17
+ "eslint": "7.32.0"
18
+ },
19
+ "peerDependencies": {
20
+ "react": "17.0.2"
21
+ }
22
+ },
23
+ "node_modules/axios": {
24
+ "version": "0.21.0",
25
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz",
26
+ "integrity": "sha512-fakehash1",
27
+ "dependencies": { "follow-redirects": "1.13.0" }
28
+ },
29
+ "node_modules/follow-redirects": {
30
+ "version": "1.13.0",
31
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
32
+ "integrity": "sha512-fakehash2"
33
+ },
34
+ "node_modules/lodash": {
35
+ "version": "4.17.15",
36
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
37
+ "integrity": "sha512-fakehash3"
38
+ },
39
+ "node_modules/express": {
40
+ "version": "4.17.1",
41
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
42
+ "integrity": "sha512-fakehash4",
43
+ "dependencies": {
44
+ "qs": "6.7.0"
45
+ }
46
+ },
47
+ "node_modules/qs": {
48
+ "version": "6.7.0",
49
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
50
+ "integrity": "sha512-fakehash5"
51
+ },
52
+ "node_modules/jest": {
53
+ "version": "27.0.0",
54
+ "dev": true,
55
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.0.0.tgz",
56
+ "integrity": "sha512-fakehash6"
57
+ },
58
+ "node_modules/eslint": {
59
+ "version": "7.32.0",
60
+ "dev": true,
61
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
62
+ "integrity": "sha512-fakehash7"
63
+ },
64
+ "node_modules/react": {
65
+ "version": "17.0.2",
66
+ "peer": true,
67
+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
68
+ "integrity": "sha512-fakehash8"
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@acme/web-app",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "dependencies": {
6
+ "axios": "0.21.0",
7
+ "lodash": "4.17.15",
8
+ "express": "4.17.1"
9
+ },
10
+ "devDependencies": {
11
+ "jest": "27.0.0",
12
+ "eslint": "7.32.0"
13
+ },
14
+ "peerDependencies": {
15
+ "react": "17.0.2"
16
+ }
17
+ }
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.acme</groupId>
5
+ <artifactId>monorepo-parent</artifactId>
6
+ <version>1.0.0</version>
7
+ <packaging>pom</packaging>
8
+ <modules>
9
+ <module>services/api</module>
10
+ <module>services/worker</module>
11
+ <module>libs/common-bom</module>
12
+ </modules>
13
+ <properties>
14
+ <jackson.version>2.9.10</jackson.version>
15
+ <log4j.version>2.14.0</log4j.version>
16
+ <spring.version>5.3.20</spring.version>
17
+ </properties>
18
+ <dependencyManagement>
19
+ <dependencies>
20
+ <dependency>
21
+ <groupId>com.acme</groupId>
22
+ <artifactId>common-bom</artifactId>
23
+ <version>1.0.0</version>
24
+ <type>pom</type>
25
+ <scope>import</scope>
26
+ </dependency>
27
+ </dependencies>
28
+ </dependencyManagement>
29
+ </project>
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.acme</groupId>
6
+ <artifactId>monorepo-parent</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>../../pom.xml</relativePath>
9
+ </parent>
10
+ <artifactId>api</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>com.fasterxml.jackson.core</groupId>
14
+ <artifactId>jackson-databind</artifactId>
15
+ </dependency>
16
+ <dependency>
17
+ <groupId>org.springframework</groupId>
18
+ <artifactId>spring-web</artifactId>
19
+ <version>${spring.version}</version>
20
+ </dependency>
21
+ <dependency>
22
+ <groupId>com.acme.private</groupId>
23
+ <artifactId>internal-auth</artifactId>
24
+ <version>1.2.3</version>
25
+ </dependency>
26
+ </dependencies>
27
+ </project>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.acme</groupId>
6
+ <artifactId>monorepo-parent</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>../../pom.xml</relativePath>
9
+ </parent>
10
+ <artifactId>worker</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>org.apache.logging.log4j</groupId>
14
+ <artifactId>log4j-core</artifactId>
15
+ </dependency>
16
+ <dependency>
17
+ <groupId>org.yaml</groupId>
18
+ <artifactId>snakeyaml</artifactId>
19
+ <version>1.30</version>
20
+ </dependency>
21
+ <dependency>
22
+ <groupId>junit</groupId>
23
+ <artifactId>junit</artifactId>
24
+ <version>4.12</version>
25
+ <scope>test</scope>
26
+ </dependency>
27
+ </dependencies>
28
+ </project>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.client.app</groupId>
6
+ <artifactId>secret-monolith</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>..</relativePath>
9
+ </parent>
10
+ <artifactId>core</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>org.springframework</groupId>
14
+ <artifactId>spring-context</artifactId>
15
+ </dependency>
16
+ <dependency>
17
+ <groupId>com.client.private</groupId>
18
+ <artifactId>secret-lib</artifactId>
19
+ </dependency>
20
+ <dependency>
21
+ <groupId>org.megacorp.private</groupId>
22
+ <artifactId>megacorp-utils</artifactId>
23
+ <version>2.1.0</version>
24
+ </dependency>
25
+ </dependencies>
26
+ </project>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.client.app</groupId>
6
+ <artifactId>secret-monolith</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>..</relativePath>
9
+ </parent>
10
+ <artifactId>plugin</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>com.client.app</groupId>
14
+ <artifactId>core</artifactId>
15
+ <version>1.0.0</version>
16
+ </dependency>
17
+ <dependency>
18
+ <groupId>com.googlecode.json-simple</groupId>
19
+ <artifactId>json-simple</artifactId>
20
+ <version>1.1.1</version>
21
+ </dependency>
22
+ </dependencies>
23
+ </project>
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>org.megacorp.parents</groupId>
6
+ <artifactId>megacorp-super-parent</artifactId>
7
+ <version>9.9.9-PRIVATE</version>
8
+ </parent>
9
+ <groupId>com.client.app</groupId>
10
+ <artifactId>secret-monolith</artifactId>
11
+ <version>1.0.0</version>
12
+ <packaging>pom</packaging>
13
+ <modules>
14
+ <module>core</module>
15
+ <module>plugin</module>
16
+ </modules>
17
+ <properties>
18
+ <spring.version>5.3.30</spring.version>
19
+ <secret-lib.version>1.0.0-CLIENT</secret-lib.version>
20
+ </properties>
21
+ <dependencyManagement>
22
+ <dependencies>
23
+ <dependency>
24
+ <groupId>com.client.private</groupId>
25
+ <artifactId>secret-lib</artifactId>
26
+ <version>${secret-lib.version}</version>
27
+ </dependency>
28
+ <dependency>
29
+ <groupId>org.springframework</groupId>
30
+ <artifactId>spring-context</artifactId>
31
+ <version>${spring.version}</version>
32
+ </dependency>
33
+ </dependencies>
34
+ </dependencyManagement>
35
+ </project>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.example.simple</groupId>
6
+ <artifactId>simple-parent</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>..</relativePath>
9
+ </parent>
10
+ <artifactId>app</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>com.fasterxml.jackson.core</groupId>
14
+ <artifactId>jackson-databind</artifactId>
15
+ </dependency>
16
+ <dependency>
17
+ <groupId>com.example.simple</groupId>
18
+ <artifactId>lib</artifactId>
19
+ <version>1.0.0</version>
20
+ </dependency>
21
+ <dependency>
22
+ <groupId>junit</groupId>
23
+ <artifactId>junit</artifactId>
24
+ <version>4.13.2</version>
25
+ <scope>test</scope>
26
+ </dependency>
27
+ </dependencies>
28
+ </project>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <parent>
5
+ <groupId>com.example.simple</groupId>
6
+ <artifactId>simple-parent</artifactId>
7
+ <version>1.0.0</version>
8
+ <relativePath>..</relativePath>
9
+ </parent>
10
+ <artifactId>lib</artifactId>
11
+ <dependencies>
12
+ <dependency>
13
+ <groupId>org.apache.commons</groupId>
14
+ <artifactId>commons-lang3</artifactId>
15
+ <version>3.14.0</version>
16
+ </dependency>
17
+ </dependencies>
18
+ </project>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example.simple</groupId>
5
+ <artifactId>simple-parent</artifactId>
6
+ <version>1.0.0</version>
7
+ <packaging>pom</packaging>
8
+ <modules>
9
+ <module>app</module>
10
+ <module>lib</module>
11
+ </modules>
12
+ <properties>
13
+ <jackson.version>2.16.0</jackson.version>
14
+ </properties>
15
+ <dependencyManagement>
16
+ <dependencies>
17
+ <dependency>
18
+ <groupId>com.fasterxml.jackson.core</groupId>
19
+ <artifactId>jackson-databind</artifactId>
20
+ <version>${jackson.version}</version>
21
+ </dependency>
22
+ </dependencies>
23
+ </dependencyManagement>
24
+ </project>