nanotaboada/java.samples.spring.boot

View on GitHub
pom.xml

Summary

Maintainability
Test Coverage
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.8</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <groupId>ar.com.nanotaboada</groupId>
    <artifactId>java.samples.spring.boot</artifactId>
    <version>3.2.2024</version>
    <name>java.samples.spring.boot</name>
    <description>PoC for a REST API made with Spring Boot using Initializr</description>
    <properties>
        <java.version>21</java.version>
    </properties>
    <!--
        Dependencies
        ________________________________________________________________________________
    -->
    <dependencies>
        <!--
            Spring Boot Starter Web
            Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat
            as the default embedded container.

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.3.3</version>
        </dependency>
        <!--
            Spring Boot Starter Data JPA
            Starter for using Spring Data JPA with Hibernate

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!--
            H2 Database Engine
            Provides a fast in-memory database that supports JDBC API and R2DBC access, with a small
            (2mb) footprint. Supports embedded and server modes as well as a browser based console
            application.

            https://mvnrepository.com/artifact/com.h2database/h2
        -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.3.232</version>
            <scope>runtime</scope>
        </dependency>
        <!--
            Spring Boot Starter Validation
            Starter for using Java Bean Validation with Hibernate Validator

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!--
            ModelMapper
            Simple, Intelligent, Object Mapping.

            https://mvnrepository.com/artifact/org.modelmapper/modelmapper
        -->
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>3.2.1</version>
        </dependency>

        <!--
            Spring Boot Starter Security
            Starter for using Spring Security.

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security
        -->
        <!--
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        -->
        <!--
            Spring Security Test
            Spring Security

            https://mvnrepository.com/artifact/org.springframework.security/spring-security-test
        -->
        <!--
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        -->
        <!--
            Spring Boot Starter Test
            Starter for testing Spring Boot applications with libraries including JUnit Jupiter,
            Hamcrest and Mockito.

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>3.2.3</version>
            <scope>test</scope>
        </dependency>
        <!--
            AssertJ Fluent Assertions
            Rich and fluent assertions for testing for Java

            https://mvnrepository.com/artifact/org.assertj/assertj-core
        -->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>3.26.3</version>
            <scope>test</scope>
        </dependency>
        <!--
            SpringDoc OpenAPI Starter WebMVC UI

            https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-webmvc-ui
        -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.6.0</version>
        </dependency>
        <!--
            Spring Boot Starter Actuator
            Starter for using Spring Boot's Actuator which provides production ready features to
            help you monitor and manage your application

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!--
            CVE-2022-1471
        -->
        <!--
            SnakeYAML
            YAML 1.1 parser and emitter for Java

            https://mvnrepository.com/artifact/org.yaml/snakeyaml
        -->
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>2.3</version>
        </dependency>
        <!--
            Spring Boot Starter Cache
            Starter for using Spring Framework's caching support

            https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-cache
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!--
            Project Lombok
            Lombok is a Java library that provides annotations to simplify Java development by automating the generation of
            boilerplate code. Key features include automatic generation of getters, setters, equals, hashCode, and toString
            methods, as well as a facility for automatic resource management. It aims to reduce the amount of manual coding,
            thereby streamlining the codebase and reducing potential for errors.

            https://mvnrepository.com/artifact/org.projectlombok/lombok
        -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.34</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <!--
            Plugins
            ________________________________________________________________________________
        -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--
                JaCoCo :: Maven Plugin
                The JaCoCo Maven Plugin provides the JaCoCo runtime agent to your tests and allows
                basic report creation.

                https://mvnrepository.com/artifact/org.jacoco/jacoco-maven-plugin
            -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.12</version>
                <configuration>
                    <!-- https://www.eclemma.org/jacoco/trunk/doc/report-mojo.html#excludes -->
                    <excludes>
                        <exclude>ar/com/nanotaboada/**/Application.class</exclude>
                        <exclude>ar/com/nanotaboada/**/models/*</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
</project>