-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpom.xml
More file actions
107 lines (95 loc) · 4.85 KB
/
Copy pathpom.xml
File metadata and controls
107 lines (95 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- Maven POM model version — always 4.0.0 for Maven 2/3/4 -->
<modelVersion>4.0.0</modelVersion>
<!--
Project coordinates — uniquely identify this artifact in a Maven repository.
groupId : reverse-domain organisation name
artifactId : name of the jar/module
version : SNAPSHOT = work in progress, not a stable release
-->
<groupId>org.abhishek</groupId>
<artifactId>Java8Practice</artifactId>
<version>1.0-SNAPSHOT</version>
<!--
─────────────────────────────────────────────────────────────
PROPERTIES
Central place to define versions and compiler settings.
Referencing them as ${property.name} keeps the POM DRY
(Don't Repeat Yourself) — change a version here once and
it updates everywhere it is used below.
─────────────────────────────────────────────────────────────
-->
<properties>
<!-- Java 21 (LTS) — enables: records, sealed classes, pattern matching,
switch expressions, text blocks, Stream.toList(), and more. -->
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<!-- AssertJ — fluent, readable assertions in tests.
e.g. assertThat(result).isEqualTo("expected") -->
<assertj.version>3.19.0</assertj.version>
</properties>
<!--
─────────────────────────────────────────────────────────────
DEPENDENCIES
Libraries this project needs at compile / runtime / test time.
<scope>test</scope> means the jar is only on the test classpath
and will NOT be bundled into the production jar.
─────────────────────────────────────────────────────────────
-->
<dependencies>
<!--
JUnit Jupiter (JUnit 5) — the testing framework.
This single aggregator dependency pulls in:
- junit-jupiter-api (write tests with @Test, @Tag, etc.)
- junit-jupiter-engine (run those tests)
- junit-jupiter-params (parameterised tests)
Pin to a specific version instead of RELEASE for reproducible builds.
-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
<!--
AssertJ Core — fluent assertion library.
Produces much clearer failure messages than plain JUnit assertions
and supports rich collection/string/exception assertions.
-->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--
─────────────────────────────────────────────────────────────
BUILD
Plugin configuration that controls how Maven compiles,
tests, and packages the project.
─────────────────────────────────────────────────────────────
-->
<build>
<plugins>
<!--
Maven Surefire Plugin — runs unit tests during the
"test" lifecycle phase.
Version 2.22.2+ is required for full JUnit 5 support.
The <groups> property (set on the command line via
-Dgroups="tagName") lets you filter which @Tag-annotated
tests to run, e.g.:
mvn test -Dgroups="integration"
mvn test -Dgroups="ecomm-unit-tests"
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>
</plugins>
</build>
</project>