-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpom.xml
More file actions
executable file
·270 lines (234 loc) · 11 KB
/
pom.xml
File metadata and controls
executable file
·270 lines (234 loc) · 11 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
<?xml version="1.0" encoding="UTF-8"?>
<!-- project -> root element of POM -->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- POM version that the file conforms to and, required for the proper functioning of Maven. -->
<modelVersion>4.0.0</modelVersion>
<!-- The parent tag in a Maven pom.xml file is used to specify a parent POM for the current POM.
This is typically used to specify common configurations that are inherited by all child POMs. The
parent tag must be the first element in the POM and must specify a unique identifier for the
parent POM, which is typically the groupId and artifactId of the parent POM.
The Spring Boot Starter Parent is a special starter project that provides default configurations
for your Spring Boot application and a complete dependency tree to quickly build your project.
It also provides default configurations for Maven plugins, such as maven-failsafe-plugin,
maven-jar-plugin, maven-surefire-plugin, and maven-war-plugin.
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.6</version>
<relativePath />
</parent>
<!-- Project informations -->
<groupId>fr.inote</groupId>
<artifactId>inote-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Inote API</name>
<description>Inote Project REST API</description>
<!-- The <properties> tag in a pom.xml file is used to define project-level properties that can
be referenced using the ${propertyName} syntax within the pom.xml. These properties can be used
for various purposes, such as defining project version, specifying dependencies version, or
configuring plugin parameters. -->
<properties>
<!-- Project will be compiled with java 17 -->
<java.version>17</java.version>
<!-- Mocking smtp server during tests -->
<greenmail.version>1.6.5</greenmail.version>
<!-- JSON Web Token version -->
<jjwt.version>0.11.5</jjwt.version>
</properties>
<!-- Dependencies of project -->
<dependencies>
<!-- Quickly setup web application (including RESTful APIs), using Spring MVC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Integration of Java Persistance Api -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- User inputs validations -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Security of application -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<!-- <version>3.2.4</version> -->
</dependency>
<!-- End-to-end JSON Web Token (JWT) creation and verification. -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
</dependency>
<!-- Provides additional development-time features to enhance the application development
experience
like automatic application restart, caching options disabling, sensible development-time
configuration -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- MariaDB driver -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Lombok annotations -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Extension of the spring-context module. It provides support for integrating common
third-party libraries into a Spring application context for caching, mailing, scheduling,
and template engines -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<!-- <version>6.1.5-SNAPSHOT</version>-->
</dependency>
<!-- Simplifies the process of sending emails within your application.
It provides easy configuration and utilizes the JavaMail library to send
emails using the Simple Mail Transfer Protocol (SMTP). -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- TEST DEPENDENCIES -->
<!-- Test tools (JUnit Jupiter, AssertJ, and Hamcrest...) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Small Java DSL for synchronizing asynchronous operations (await...)-->
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>
<!-- The <build> tag in a pom.xml file is used to define the configuration for building the
project. It contains a list of plugins that will be executed during the build process. These
plugins can perform various tasks such as compiling code, running tests, generating
documentation, and packaging the application. -->
<!-- In-memory database (for tests)-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<!-- <version>2.2.224</version>-->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
<!-- Spring Security Tests is a component of Spring Security that provides
support for testing security-related features in your Spring
applications. It works in conjunction with Spring MVC Test
and offers features like:
- Configuring the Spring Security filter chain for testing.
- Setting up a SecurityContext with mock users for the tests.
- Providing RequestPostProcessors and RequestBuilders for modifying requests.
- Implementing ResultMatchers for making security-related assertions about requests. -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Mocking of stmp server -->
<dependency>
<groupId>com.icegreen</groupId>
<artifactId>greenmail-junit5</artifactId>
<version>${greenmail.version}</version>
<scope>test</scope>
</dependency>
<!-- Swagger UI -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<!-- List of plugins -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
<!-- Jacoco is an open-source tool for measuring and reporting Java code coverage -->
<plugin>
<!-- Plugin informations -->
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<!-- <configuration> is used to configure the plugin’s behavior. -->
<executions> <!-- optional element that defines when and how the plugin should be
executed during the build process -->
<execution>
<goals> <!-- The plugin goals to be executed. -->
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id> <!-- The unique identifier for this execution. -->
<!-- <phase>prepare-package</phase> The build phase during which the plugin
should be executed. -->
<goals>
<goal>report</goal> <!-- The plugin goals to be executed. -->
</goals>
</execution>
</executions>
</plugin>
<!-- Spring-boot-maven-plugin is a plugin for the Apache Maven build tool, specifically
designed to provide support for Spring Boot projects. It allows you to easily create
executable JAR or WAR archives, run Spring Boot applications, generate build
information, and start your Spring Boot application prior to running integration tests -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>