All Downloads are FREE. Search and download functionalities are using the official Maven repository.

archetype-resources.pom.xml Maven / Gradle / Ivy

There is a newer version: 1.2.6
Show newest version
<?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">

   <modelVersion>4.0.0</modelVersion>

   <!-- ********************************************** -->
   <!-- ***************** PARENT POM ***************** -->
   <!-- ********************************************** -->

   <parent>
      <groupId>com.bernardomg.maven</groupId>
      <artifactId>base-pom</artifactId>
      <version>1.3.4</version>
   </parent>

   <!-- ********************************************** -->
   <!-- **************** PROJECT INFO **************** -->
   <!-- ********************************************** -->

   <groupId>${groupId}</groupId>
   <artifactId>${artifactId}</artifactId>
   <version>${version}</version>
   <packaging>war</packaging>

   <name>${projectName}</name>
   <description>${projectDescription}</description>
   <url>https://github.com/${repoUserId}/${artifactId}</url>
   <inceptionYear>${currentYear}</inceptionYear>

   <licenses>
      <license>
         <name>MIT License</name>
         <url>http://www.opensource.org/licenses/mit-license.php</url>
         <distribution>repo</distribution>
      </license>
   </licenses>

   <!-- ********************************************** -->
   <!-- ************ RESOURCES AND SERVICES ********** -->
   <!-- ********************************************** -->

   <scm>
      <connection>scm:git:https://github.com/${repoUserId}/${artifactId}.git</connection>
      <developerConnection>scm:git:https://github.com/${repoUserId}/${artifactId}.git</developerConnection>
      <tag>head</tag>
      <url>https://www.github.com/${repoUserId}/${artifactId}</url>
   </scm>

   <issueManagement>
      <system>GitHub</system>
      <url>https://www.github.com/${repoUserId}/${artifactId}/issues</url>
   </issueManagement>

   <ciManagement>
      <system>Github</system>
      <url>https://www.github.com/${repoUserId}/${artifactId}/actions</url>
      <notifiers />
   </ciManagement>

   <distributionManagement>
      <repository>
         <uniqueVersion>false</uniqueVersion>
         <id>releases</id>
         <name>Releases Repository</name>
         <url>https://api.bintray.com/maven/${repoUserId}/maven/${artifactId}</url>
      </repository>
      <snapshotRepository>
         <uniqueVersion>false</uniqueVersion>
         <id>snapshots</id>
         <name>Snapshots Repository</name>
         <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
      </snapshotRepository>
   </distributionManagement>

   <!-- ********************************************** -->
   <!-- ****************** PROFILES ****************** -->
   <!-- ********************************************** -->

   <profiles>
      <profile>
         <!-- Profile for the Eclipse Maven plugin -->
         <!-- Sets the POM so this plugin does not give the usual unregistered goals errors -->
         <!-- It will be activated automatically on Eclipse if this has the m2e plugin, by detecting the version property -->
         <id>eclipse-maven</id>
         <activation>
            <property>
               <name>m2e.version</name>
            </property>
         </activation>
         <build>
            <pluginManagement>
               <plugins>
                  <plugin>
                     <!-- m2e lifecycle mapping -->
                     <!-- This is used to configure the Maven plugin for Eclipse. -->
                     <!-- Among other things, it allows registering goals, which Eclipse would otherwise reject. -->
                     <!-- It has no real effect on Maven. -->
                     <groupId>org.eclipse.m2e</groupId>
                     <artifactId>lifecycle-mapping</artifactId>
                     <version>${plugin.lifecycle.version}</version>
                     <configuration>
                        <!-- Sample fix for plugin executions -->
                        <!-- This is to be used in case a Maven plugins gives problems in Eclipse -->
                        <!-- <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <versionRange>[0.5,)</versionRange> 
                           <goals> <goal>prepare-agent</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> -->
                        <downloadSources>true</downloadSources>
                        <downloadJavadocs>true</downloadJavadocs>
                     </configuration>
                  </plugin>
               </plugins>
            </pluginManagement>
         </build>
      </profile>
      <!-- ============================================== -->
      <!-- ============= DATABASE PROFILES ============== -->
      <!-- ============================================== -->
      <profile>
         <!-- H2 database profile -->
         <!-- Prepares the project to make use of an H2 in-memory database -->
         <id>h2</id>
         <activation>
            <!-- Active by default so it can be installed by CI -->
            <activeByDefault>true</activeByDefault>
         </activation>
         <dependencies>
            <dependency>
               <!-- H2 database -->
               <groupId>com.h2database</groupId>
               <artifactId>h2</artifactId>
               <version>${h2.version}</version>
            </dependency>
         </dependencies>
      </profile>
      <profile>
         <!-- MySQL database profile -->
         <!-- Prepares the project to make use of a MySQL database -->
         <id>mysql</id>
         <activation>
            <property>
               <name>env.DATABASE_SYSTEM</name>
               <value>mysql</value>
            </property>
         </activation>
         <dependencies>
            <dependency>
               <!-- MySQL connector -->
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>${mysql.version}</version>
            </dependency>
         </dependencies>
      </profile>
      <profile>
         <!-- Postgres database profile -->
         <!-- Prepares the project to make use of a Postgres database -->
         <id>postgres</id>
         <activation>
            <property>
               <name>env.DATABASE_SYSTEM</name>
               <value>postgres</value>
            </property>
         </activation>
         <dependencies>
            <dependency>
               <!-- Postgres connector -->
               <groupId>org.postgresql</groupId>
               <artifactId>postgresql</artifactId>
               <version>${postgresql.version}</version>
            </dependency>
         </dependencies>
      </profile>
      <!-- ============================================== -->
      <!-- ============ DEPLOYMENT PROFILES ============= -->
      <!-- ============================================== -->
      <profile>
         <!-- Release site deployment profile -->
         <!-- Sets the site repository to point to the releases repo -->
         <id>deployment-release</id>
         <activation>
            <!-- Active by default so the repository appears in the reports -->
            <activeByDefault>true</activeByDefault>
         </activation>
         <distributionManagement>
            <site>
               <id>site</id>
               <name>Project Documentation Site</name>
               <!-- The URL should be set externally -->
               <url>${site.release.url}</url>
            </site>
         </distributionManagement>
      </profile>
      <profile>
         <!-- Development site deployment profile -->
         <!-- Sets the site repository to point to the development repo -->
         <id>deployment-development</id>
         <distributionManagement>
            <site>
               <id>site-development</id>
               <name>Project Development Documentation Site</name>
               <!-- The URL should be set externally -->
               <url>${site.develop.url}</url>
            </site>
         </distributionManagement>
      </profile>
      <profile>
         <!-- Deployment profile -->
         <!-- Sets ups the environment for deployment -->
         <id>deployment</id>
         <properties>
            <!-- Tests are skipped -->
            <maven.test.skip>true</maven.test.skip>
         </properties>
      </profile>
   </profiles>

   <!-- ********************************************** -->
   <!-- *********** ORGANIZATION AND MEMBERS ********* -->
   <!-- ********************************************** -->

   <organization>
      <name>${developerName}</name>
      <url>${developerUrl}</url>
   </organization>

   <developers>
      <developer>
         <id>${developerId}</id>
         <name>${developerName}</name>
         <email>${developerMail}</email>
         <url>${developerUrl}</url>
         <organization>${developerName}</organization>
         <organizationUrl>${developerUrl}</organizationUrl>
         <roles>
            <role>Developer</role>
         </roles>
         <timezone>+1</timezone>
         <properties />
      </developer>
   </developers>

   <!-- ********************************************** -->
   <!-- **************** PROPERTIES ****************** -->
   <!-- ********************************************** -->

   <properties>
      <!-- ============================================== -->
      <!-- =============== MAVEN VERSION ================ -->
      <!-- ============================================== -->
      <maven.version>3.5.0</maven.version>
      <!-- ============================================== -->
      <!-- ================ JAVA VERSION ================ -->
      <!-- ============================================== -->
      <java.version>1.8</java.version>
      <!-- ============================================== -->
      <!-- =============== MANIFEST DATA ================ -->
      <!-- ============================================== -->
      <manifest.name>com/bernardomg/jqassistant/test</manifest.name>
      <!-- ============================================== -->
      <!-- =============== TEMPLATE INFO ================ -->
      <!-- ============================================== -->
      <view.keywords>"keywords"</view.keywords>
      <site.url>https://application.com</site.url>
      <social.twitter>@BernardoMartG</social.twitter>
      <!-- ============================================== -->
      <!-- ============= NODE ENVIRONMENT =============== -->
      <!-- ============================================== -->
      <node.env.api>http://localhost:8080</node.env.api>
      <node.env.appVersion>v${project.version}</node.env.appVersion>
      <node.env.repoUrl>${project.scm.url}</node.env.repoUrl>
      <node.env.inputPath>./src/main/js/</node.env.inputPath>
      <node.env.outputPath>./target/classes/static/</node.env.outputPath>
      <node.env.modules>./node_modules</node.env.modules>
      <!-- ============================================== -->
      <!-- =========== DEPENDENCIES VERSIONS ============ -->
      <!-- ============================================== -->
      <aspectj.version>1.9.6</aspectj.version>
      <byteBuddy.version>1.10.13</byteBuddy.version>
      <classmate.version>1.5.1</classmate.version>
      <commons.logging.version>1.2</commons.logging.version>
      <glassfish.el>2.2</glassfish.el>
      <guava.version>29.0-jre</guava.version>
      <h2.version>1.4.200</h2.version>
      <hamcrest.version>2.2</hamcrest.version>
      <hibernate.validator.version>5.4.3.Final</hibernate.validator.version>
      <hibernate.version>5.4.21.Final</hibernate.version>
      <hikari.version>3.4.5</hikari.version>
      <itext.version>5.5.13.1</itext.version>
      <jackson.version>2.11.2</jackson.version>
      <javaee.api.version>2.2</javaee.api.version>
      <jsonpath.version>2.4.0</jsonpath.version>
      <junit.jupiter.version>5.6.2</junit.jupiter.version>
      <liquibase.version>3.10.2</liquibase.version>
      <log4j.version>2.13.3</log4j.version>
      <mockito.version>3.5.10</mockito.version>
      <mysql.version>5.1.39</mysql.version>
      <postgresql.version>42.1.4</postgresql.version>
      <servlet.version>4.0.1</servlet.version>
      <slf4j.version>1.7.30</slf4j.version>
      <snakeyaml.version>1.26</snakeyaml.version>
      <spring.boot.version>2.3.3.RELEASE</spring.boot.version>
      <spring.data.train.version>Neumann-SR3</spring.data.train.version>
      <spring.version>5.2.8.RELEASE</spring.version>
      <thymeleaf.version>3.0.11.RELEASE</thymeleaf.version>
      <webappRunner.version>8.5.30.0</webappRunner.version>
      <!-- ============================================== -->
      <!-- ============== PLUGINS VERSIONS ============== -->
      <!-- ============================================== -->
      <plugin.frontend.node.version>v12.3.1</plugin.frontend.node.version>
      <plugin.frontend.npm.version>6.9.0</plugin.frontend.npm.version>
      <plugin.frontend.version>1.10.0</plugin.frontend.version>
      <plugin.spring.boot.version>${spring.boot.version}</plugin.spring.boot.version>
      <!-- ============================================== -->
      <!-- ================= MAVEN SITE ================= -->
      <!-- ============================================== -->
      <site.skin.version>2.0.8</site.skin.version>
   </properties>

   <!-- ********************************************** -->
   <!-- *************** DEPENDENCIES ***************** -->
   <!-- ********************************************** -->

   <dependencyManagement>
      <dependencies>
         <dependency>
            <!-- Spring Framework BOM -->
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>${spring.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
         <dependency>
            <!-- Spring Data Train BOM -->
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>${spring.data.train.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
         <dependency>
            <!-- Jackson BOM -->
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>${jackson.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
         <dependency>
            <!-- JUnit BOM -->
            <groupId>org.junit</groupId>
            <artifactId>junit-bom</artifactId>
            <version>${junit.jupiter.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <!-- ============================================== -->
      <!-- ================== SPRING ==================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Spring AOP -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-aop</artifactId>
      </dependency>
      <dependency>
         <!-- Spring beans -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-beans</artifactId>
      </dependency>
      <dependency>
         <!-- Spring context -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
      </dependency>
      <dependency>
         <!-- Spring context support -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-context-support</artifactId>
      </dependency>
      <dependency>
         <!-- Spring Core -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
      </dependency>
      <dependency>
         <!-- Spring Data JPA -->
         <groupId>org.springframework.data</groupId>
         <artifactId>spring-data-jpa</artifactId>
      </dependency>
      <dependency>
         <!-- Spring JDBC -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-jdbc</artifactId>
      </dependency>
      <dependency>
         <!-- Spring OXM -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-oxm</artifactId>
      </dependency>
      <dependency>
         <!-- Spring transactions -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
      </dependency>
      <dependency>
         <!-- Spring Web -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
      </dependency>
      <dependency>
         <!-- Spring Web MVC -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
      </dependency>
      <dependency>
         <!-- Spring ORM -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-orm</artifactId>
      </dependency>
      <!-- ============================================== -->
      <!-- =============== SPRING BOOT ================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Spring Boot Starter: Thymeleaf -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
         <version>${spring.boot.version}</version>
         <exclusions>
            <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: Web -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
         <version>${spring.boot.version}</version>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: JPA -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
         <version>${spring.boot.version}</version>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: Devtools -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <version>${spring.boot.version}</version>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: AOP -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-aop</artifactId>
         <version>${spring.boot.version}</version>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: Cache -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-cache</artifactId>
         <version>${spring.boot.version}</version>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: log4j -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-log4j2</artifactId>
         <version>${spring.boot.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================= ASPECTJ ==================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- AspectJ Runtime -->
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjrt</artifactId>
         <version>${aspectj.version}</version>
      </dependency>
      <dependency>
         <!-- AspectJ Weaver -->
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>${aspectj.version}</version>
         <scope>runtime</scope>
      </dependency>
      <!-- ============================================== -->
      <!-- ============== JPA DEPENDENCIES ============== -->
      <!-- ============================================== -->
      <dependency>
         <!-- JPA API -->
         <groupId>javax.persistence</groupId>
         <artifactId>javax.persistence-api</artifactId>
         <version>${javaee.api.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================ HIBERNATE =================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Hibernate Core -->
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-core</artifactId>
         <version>${hibernate.version}</version>
      </dependency>
      <dependency>
         <!-- Hibernate Ehcache -->
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-ehcache</artifactId>
         <version>${hibernate.version}</version>
      </dependency>
      <dependency>
         <!-- Hibernate validator -->
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-validator</artifactId>
         <version>${hibernate.validator.version}</version>
      </dependency>
      <dependency>
         <!-- Hikari CP -->
         <groupId>com.zaxxer</groupId>
         <artifactId>HikariCP</artifactId>
         <version>${hikari.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================ LIQUIBASE =================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Liquibase -->
         <groupId>org.liquibase</groupId>
         <artifactId>liquibase-core</artifactId>
         <version>${liquibase.version}</version>
         <exclusions>
            <exclusion>
               <groupId>ch.qos.logback</groupId>
               <artifactId>logback-classic</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <!-- ============================================== -->
      <!-- ================ SNAKEYAML =================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- SnakeYAML -->
         <groupId>org.yaml</groupId>
         <artifactId>snakeyaml</artifactId>
         <version>${snakeyaml.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- =================== ITEXT ==================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- IText -->
         <groupId>com.itextpdf</groupId>
         <artifactId>itextpdf</artifactId>
         <version>${itext.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================ SERVLET ===================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Servlet API -->
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>${servlet.version}</version>
         <scope>provided</scope>
      </dependency>
      <!-- ============================================== -->
      <!-- ================ THYMELEAF =================== -->
      <!-- ============================================== -->
      <dependency>
         <groupId>org.thymeleaf</groupId>
         <artifactId>thymeleaf</artifactId>
         <version>${thymeleaf.version}</version>
      </dependency>
      <dependency>
         <groupId>org.thymeleaf</groupId>
         <artifactId>thymeleaf-spring5</artifactId>
         <version>${thymeleaf.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================== LOGGING =================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- SL4J API -->
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j.version}</version>
      </dependency>
      <dependency>
         <!-- Log4j SLF4J Bridge -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <!-- Log4j core -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <!-- Log4j Commons Logging Bridge -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-jcl</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <!-- Log4j Web -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-web</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ================= JACKSON ==================== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Jackson -->
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-core</artifactId>
      </dependency>
      <dependency>
         <!-- Jackson databinding -->
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-databind</artifactId>
      </dependency>
      <dependency>
         <!-- Jackson annotations -->
         <groupId>com.fasterxml.jackson.core</groupId>
         <artifactId>jackson-annotations</artifactId>
      </dependency>
      <!-- ============================================== -->
      <!-- ============ OTHER DEPENDENCIES ============== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Guava -->
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>${guava.version}</version>
      </dependency>
      <dependency>
         <!-- Javax EL implementation -->
         <groupId>org.glassfish.web</groupId>
         <artifactId>el-impl</artifactId>
         <version>${glassfish.el}</version>
         <scope>provided</scope>
      </dependency>
      <!-- ============================================== -->
      <!-- =========== VERSION ENFORCEMENT ============== -->
      <!-- ============================================== -->
      <dependency>
         <!-- FasterXML ClassMate -->
         <groupId>com.fasterxml</groupId>
         <artifactId>classmate</artifactId>
         <version>${classmate.version}</version>
      </dependency>
      <dependency>
         <!-- Commons Logging -->
         <groupId>commons-logging</groupId>
         <artifactId>commons-logging</artifactId>
         <version>${commons.logging.version}</version>
      </dependency>
      <dependency>
         <!-- Byte Buddy -->
         <groupId>net.bytebuddy</groupId>
         <artifactId>byte-buddy</artifactId>
         <version>${byteBuddy.version}</version>
      </dependency>
      <!-- ============================================== -->
      <!-- ======= TEST ENVIRONMENT DEPENDENCIES ======== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Hamcrest -->
         <groupId>org.hamcrest</groupId>
         <artifactId>hamcrest-core</artifactId>
         <version>${hamcrest.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- JSON Path -->
         <groupId>com.jayway.jsonpath</groupId>
         <artifactId>json-path</artifactId>
         <version>${jsonpath.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- JUnit Jupiter Engine -->
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- JUnit Jupiter Platform -->
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-runner</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <!-- JUnit 3 -->
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <!-- Mockito -->
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <version>${mockito.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- Spring Test -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- Spring Boot Starter: Test -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <version>${spring.boot.version}</version>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
   </dependencies>

   <!-- ********************************************** -->
   <!-- ******************* BUILD ******************** -->
   <!-- ********************************************** -->

   <build>
      <defaultGoal>clean package</defaultGoal>
      <pluginManagement>
         <plugins>
            <plugin>
               <!-- Frontend Plugin -->
               <groupId>com.github.eirslett</groupId>
               <artifactId>frontend-maven-plugin</artifactId>
               <version>${plugin.frontend.version}</version>
            </plugin>
         </plugins>
      </pluginManagement>
      <plugins>
         <plugin>
            <!-- Build helper -->
            <!-- Adds the generated files to the Maven classpath -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
               <execution>
                  <id>add-source</id>
                  <goals>
                     <goal>add-source</goal>
                  </goals>
                  <configuration>
                     <sources>
                        <!-- JS sources -->
                        <source>${project.basedir}/src/main/js</source>
                     </sources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <!-- Changes -->
            <!-- Takes care of the changes log -->
            <!-- It is set to also validate the changes log file -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-changes-plugin</artifactId>
            <executions>
               <!-- Changes plugin is bound to the pre-site phase -->
               <execution>
                  <id>check-changes</id>
                  <phase>pre-site</phase>
                  <goals>
                     <goal>changes-check</goal>
                  </goals>
               </execution>
               <execution>
                  <id>validate-changes</id>
                  <phase>pre-site</phase>
                  <goals>
                     <goal>changes-validate</goal>
                  </goals>
                  <configuration>
                     <failOnError>true</failOnError>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <!-- Frontend Plugin -->
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <configuration>
               <installDirectory>target</installDirectory>
            </configuration>
            <executions>
               <execution>
                  <!-- Installs the frontend frameworks -->
                  <!-- Installs Node and npm -->
                  <id>frontend-framework</id>
                  <goals>
                     <goal>install-node-and-npm</goal>
                  </goals>
                  <configuration>
                     <nodeVersion>${plugin.frontend.node.version}</nodeVersion>
                     <npmVersion>${plugin.frontend.npm.version}</npmVersion>
                  </configuration>
               </execution>
               <execution>
                  <!-- Installs the frontend dependencies -->
                  <!-- Installs npm dependencies -->
                  <id>frontend-dependencies</id>
                  <goals>
                     <goal>npm</goal>
                  </goals>
                  <configuration>
                     <arguments>install</arguments>
                  </configuration>
               </execution>
               <execution>
                  <!-- Runs the frontend tests -->
                  <id>frontend-test</id>
                  <goals>
                     <goal>npm</goal>
                  </goals>
                  <phase>test</phase>
                  <configuration>
                     <arguments>test</arguments>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <!-- Resources -->
            <!-- Handles the project resources. -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
               <!-- Variables to to override will be delimited with a @. -->
               <!-- This avoids collisions with Spring variables. -->
               <!-- So instead of replacing ${project.name} Maven will replace @project.name@. -->
               <useDefaultDelimiters>false</useDefaultDelimiters>
               <delimiters>
                  <delimiter>@</delimiter>
               </delimiters>
            </configuration>
         </plugin>
         <plugin>
            <!-- Site -->
            <!-- Generates the Maven Site -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <dependencies>
               <dependency>
                  <!-- Docs Maven Skin -->
                  <groupId>com.bernardomg.maven.skins</groupId>
                  <artifactId>docs-maven-skin</artifactId>
                  <version>${site.skin.version}</version>
               </dependency>
            </dependencies>
         </plugin>
         <plugin>
            <!-- WAR -->
            <!-- Generates the WAR package. -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
               <webResources>
                  <resource>
                     <!-- The UI template is filtered -->
                     <filtering>true</filtering>
                     <directory>${project.basedir}/src/main/resources/templates</directory>
                     <targetPath>WEB-INF/templates</targetPath>
                     <includes>
                        <include>index.html</include>
                     </includes>
                  </resource>
               </webResources>
               <!-- Variables to to override will be delimited with a @. -->
               <!-- This avoids collisions with Spring variables. -->
               <!-- So instead of replacing ${project.name} Maven will replace @project.name@. -->
               <useDefaultDelimiters>false</useDefaultDelimiters>
               <delimiters>
                  <delimiter>@</delimiter>
               </delimiters>
            </configuration>
         </plugin>
         <plugin>
            <!-- Spring Boot -->
            <!-- Takes care of running Spring Boot application -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${plugin.spring.boot.version}</version>
            <executions>
               <execution>
                  <goals>
                     <goal>repackage</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <!-- ********************************************** -->
   <!-- ****************** REPORTS ******************* -->
   <!-- ********************************************** -->

   <reporting>
      <plugins>
         <plugin>
            <!-- FindBugs -->
            <!-- Checks for patterns which are prone to errors -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <configuration>
               <!-- Exclusion patterns -->
               <excludeFilterFile>${project.basedir}/src/config/findbugs/findbugs-exclude.xml</excludeFilterFile>
            </configuration>
         </plugin>
         <plugin>
            <!-- Checkstyle -->
            <!-- Checks that the source files comply with style standards -->
            <!-- It is using a customized rules file -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <configuration>
               <!-- The customized rules file -->
               <configLocation>${project.basedir}/src/config/checkstyle/checkstyle-rules.xml</configLocation>
               <!-- Excludes generated code -->
               <excludes>**/generated/**/*</excludes>
            </configuration>
         </plugin>
         <plugin>
            <!-- Javadoc -->
            <!-- Generates the javadocs -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
               <sourceFileExcludes>
                  <!-- Excludes generated code -->
                  <exclude>**/generated/**/*</exclude>
               </sourceFileExcludes>
            </configuration>
         </plugin>
         <plugin>
            <!-- PMD -->
            <!-- Checks that the code complies with a series of code quality rules -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <configuration>
               <rulesets>
                  <!-- The customized rules file -->
                  <ruleset>${project.basedir}/src/config/pmd/pmd-rules.xml</ruleset>
               </rulesets>
               <excludes>
                  <!-- Excludes generated code -->
                  <exclude>**/generated/**/*</exclude>
               </excludes>
            </configuration>
         </plugin>
      </plugins>
   </reporting>

</project>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy