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.2.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>Travis CI</system>
      <url>https://travis-ci.org/${repoUserId}/${artifactId}</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>
         <!-- Properties-based database profile -->
         <!-- Sets up the database from properties -->
         <id>db-properties</id>
         <activation>
            <!-- Active by default -->
            <activeByDefault>true</activeByDefault>
         </activation>
         <properties>
            <!-- Authentication sources for the DB -->
            <database.auth.source>properties</database.auth.source>
         </properties>
      </profile>
      <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>
         <properties>
            <!-- Access data -->
            <!-- Default values for testing and development -->
            <!-- Override them for production -->
            <database.url>jdbc:h2:mem:${artifactId.replace("-", "_")}</database.url>
            <database.username>sa</database.username>
            <database.password></database.password>
            <!-- Spring context -->
            <database.tag>h2</database.tag>
         </properties>
         <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>
         <properties>
            <!-- Access data -->
            <!-- Default values for testing and development -->
            <!-- Override them for production -->
            <database.url>jdbc:mysql://localhost:3306/${artifactId.replace("-", "_")}</database.url>
            <database.username>root</database.username>
            <database.password></database.password>
            <!-- Spring context -->
            <database.tag>mysql</database.tag>
         </properties>
         <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>
         <properties>
            <!-- Access data -->
            <!-- Default values for testing and development -->
            <!-- Override them for production -->
            <database.url>jdbc:postgresql://localhost:5432/${artifactId.replace("-", "_")}</database.url>
            <database.username>postgres</database.username>
            <database.password></database.password>
            <!-- Spring context -->
            <database.tag>postgres</database.tag>
         </properties>
         <dependencies>
            <dependency>
               <!-- Postgres connector -->
               <groupId>org.postgresql</groupId>
               <artifactId>postgresql</artifactId>
               <version>${postgresql.version}</version>
            </dependency>
         </dependencies>
      </profile>
      <!-- ============================================== -->
      <!-- ========= EMBEDDED SERVER PROFILES =========== -->
      <!-- ============================================== -->
      <profile>
         <!-- Jetty profile -->
         <!-- Sets ups Jetty for testing and local deployment -->
         <id>jetty</id>
         <build>
            <plugins>
               <plugin>
                  <!-- Jetty -->
                  <!-- Jetty will run the web service during the integration 
                     tests -->
                  <groupId>org.eclipse.jetty</groupId>
                  <artifactId>jetty-maven-plugin</artifactId>
                  <version>${plugin.jetty.version}</version>
                  <configuration>
                     <stopKey>STOP</stopKey>
                     <stopPort>9999</stopPort>
                     <stopWait>5</stopWait>
                  </configuration>
                  <executions>
                     <execution>
                        <id>start-jetty-it</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                           <goal>start</goal>
                        </goals>
                        <configuration>
                           <scanIntervalSeconds>0</scanIntervalSeconds>
                           <daemon>true</daemon>
                           <useTestScope>true</useTestScope>
                           <webApp>
                              <overrideDescriptor>${project.build.directory}/${project.build.finalName}/WEB-INF/web.xml</overrideDescriptor>
                           </webApp>
                        </configuration>
                     </execution>
                     <execution>
                        <id>stop-jetty-it</id>
                        <phase>post-integration-test</phase>
                        <goals>
                           <goal>stop</goal>
                        </goals>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <!-- Tomcat 7 profile -->
         <!-- Sets ups Tomcat 7 for testing and local deployment -->
         <id>tomcat7</id>
         <build>
            <plugins>
               <plugin>
                  <!-- Tomcat 7 -->
                  <!-- Tomcat 7 will run the web service during the integration 
                     tests -->
                  <groupId>org.apache.tomcat.maven</groupId>
                  <artifactId>tomcat7-maven-plugin</artifactId>
                  <version>${plugin.tomcat7.version}</version>
                  <executions>
                     <execution>
                        <id>start-tomcat-it</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <fork>true</fork>
                           <useTestClasspath>true</useTestClasspath>
                           <warSourceDirectory>${project.build.directory}/${project.build.finalName}/</warSourceDirectory>
                        </configuration>
                     </execution>
                     <execution>
                        <id>stop-tomcat-it</id>
                        <phase>post-integration-test</phase>
                        <goals>
                           <goal>shutdown</goal>
                        </goals>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </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>
      <!-- ============================================== -->
      <!-- =========== RUNTIME ENV PROFILES ============= -->
      <!-- ============================================== -->
      <profile>
         <!-- Production profile -->
         <!-- Sets ups the environment for production -->
         <id>production</id>
         <activation>
            <property>
               <name>env.ENVIRONMENT_MODE</name>
               <value>production</value>
            </property>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <!-- Frontend Plugin -->
                  <groupId>com.github.eirslett</groupId>
                  <artifactId>frontend-maven-plugin</artifactId>
                  <executions>
                     <execution>
                        <!-- Builds the frontend -->
                        <id>frontend-build</id>
                        <goals>
                           <goal>npm</goal>
                        </goals>
                        <configuration>
                           <arguments>run build</arguments>
                           <environmentVariables>
                              <APP_VERSION>${node.env.appVersion}</APP_VERSION>
                              <REPO_URL>${node.env.repoUrl}</REPO_URL>
                              <INPUT_PATH>${node.env.inputPath}</INPUT_PATH>
                              <OUTPUT_PATH>${node.env.outputPath}</OUTPUT_PATH>
                              <MODULE_PATH>${node.env.modules}</MODULE_PATH>
                           </environmentVariables>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <!-- Development profile -->
         <!-- Sets ups the environment for development and testing -->
         <id>development</id>
         <activation>
            <!-- Active by default to ease development -->
            <activeByDefault>true</activeByDefault>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <!-- Frontend Plugin -->
                  <groupId>com.github.eirslett</groupId>
                  <artifactId>frontend-maven-plugin</artifactId>
                  <executions>
                     <execution>
                        <!-- Builds the frontend -->
                        <id>frontend-build</id>
                        <goals>
                           <goal>npm</goal>
                        </goals>
                        <configuration>
                           <arguments>run development</arguments>
                           <environmentVariables>
                              <APP_VERSION>${node.env.appVersion}</APP_VERSION>
                              <REPO_URL>${node.env.repoUrl}</REPO_URL>
                              <INPUT_PATH>${node.env.inputPath}</INPUT_PATH>
                              <OUTPUT_PATH>${node.env.outputPath}</OUTPUT_PATH>
                              <MODULE_PATH>${node.env.modules}</MODULE_PATH>
                           </environmentVariables>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <!-- ============================================== -->
      <!-- =============== HOST PROFILES ================ -->
      <!-- ============================================== -->
      <profile>
         <!-- Heroku profiles -->
         <!-- Sets up the project to be built by heroku -->
         <id>heroku</id>
         <activation>
            <property>
               <name>env.DYNO</name>
            </property>
         </activation>
         <properties>
            <!-- Spring context -->
            <database.auth.source>env</database.auth.source>
         </properties>
         <build>
            <plugins>
               <plugin>
                  <!-- Dependency plugin -->
                  <!-- Used to copy the webapp runner -->
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>copy-webapp-runner</id>
                        <phase>package</phase>
                        <goals>
                           <goal>copy</goal>
                        </goals>
                        <configuration>
                           <artifactItems>
                              <artifactItem>
                                 <groupId>com.github.jsimone</groupId>
                                 <artifactId>webapp-runner</artifactId>
                                 <version>${webappRunner.version}</version>
                                 <destFileName>webapp-runner.jar</destFileName>
                              </artifactItem>
                           </artifactItems>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <!-- ============================================== -->
      <!-- =========== BENCHMARKING PROFILES ============ -->
      <!-- ============================================== -->
      <profile>
         <!-- Size report profile -->
         <id>size</id>
         <build>
            <plugins>
               <plugin>
                  <!-- Frontend Plugin -->
                  <groupId>com.github.eirslett</groupId>
                  <artifactId>frontend-maven-plugin</artifactId>
                  <executions>
                     <execution>
                        <!-- Builds the frontend -->
                        <id>frontend-build</id>
                        <goals>
                           <goal>npm</goal>
                        </goals>
                        <configuration>
                           <arguments>run size</arguments>
                           <environmentVariables>
                              <APP_VERSION>${node.env.appVersion}</APP_VERSION>
                              <REPO_URL>${node.env.repoUrl}</REPO_URL>
                              <INPUT_PATH>${node.env.inputPath}</INPUT_PATH>
                              <OUTPUT_PATH>${node.env.outputPath}</OUTPUT_PATH>
                              <MODULE_PATH>${node.env.modules}</MODULE_PATH>
                           </environmentVariables>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </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>
      <!-- ============================================== -->
      <!-- ================ JAVA VERSION ================ -->
      <!-- ============================================== -->
      <java.version>1.8</java.version>
      <!-- ============================================== -->
      <!-- =============== MANIFEST DATA ================ -->
      <!-- ============================================== -->
      <manifest.name>${packageInPathFormat}</manifest.name>
      <!-- ============================================== -->
      <!-- =============== TEMPLATE INFO ================ -->
      <!-- ============================================== -->
      <view.keywords>${keywords}</view.keywords>
      <site.url>${siteUrl}</site.url>
      <social.twitter>${twitter}</social.twitter>
      <!-- ============================================== -->
      <!-- ============= NODE ENVIRONMENT =============== -->
      <!-- ============================================== -->
      <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/generated-ui/</node.env.outputPath>
      <node.env.modules>./node_modules</node.env.modules>
      <!-- ============================================== -->
      <!-- =========== DEPENDENCIES VERSIONS ============ -->
      <!-- ============================================== -->
      <aspectj.version>1.9.4</aspectj.version>
      <classmate.version>1.3.4</classmate.version>
      <commons.logging.version>1.2</commons.logging.version>
      <glassfish.el>2.2</glassfish.el>
      <guava.version>28.0-jre</guava.version>
      <h2.version>1.4.199</h2.version>
      <hamcrest.version>2.0.0.0</hamcrest.version>
      <hibernate.validator.version>5.4.1.Final</hibernate.validator.version>
      <hibernate.version>5.2.17.Final</hibernate.version>
      <hikari.version>2.7.8</hikari.version>
      <jackson.version>2.9.6</jackson.version>
      <javaee.api.version>2.2</javaee.api.version>
      <jasperreports.version>6.4.1</jasperreports.version>
      <jsonpath.version>2.4.0</jsonpath.version>
      <junit.jupiter.version>5.5.1</junit.jupiter.version>
      <junit.platform.version>1.5.1</junit.platform.version>
      <liquibase.version>3.7.0</liquibase.version>
      <log4j.version>2.11.1</log4j.version>
      <mockito.version>2.25.0</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.8.0-alpha2</slf4j.version>
      <spring.data.train.version>Kay-RELEASE</spring.data.train.version>
      <spring.version>5.0.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.7.6</plugin.frontend.version>
      <plugin.jetty.version>9.4.19.v20190610</plugin.jetty.version>
      <plugin.tomcat7.version>2.2</plugin.tomcat7.version>
      <!-- ============================================== -->
      <!-- ================= MAVEN SITE ================= -->
      <!-- ============================================== -->
      <site.skin.version>1.4.2</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>
      </dependencies>
   </dependencyManagement>

   <dependencies>
      <!-- ============================================== -->
      <!-- ================== SPRING ==================== -->
      <!-- ============================================== -->
      <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 MVC -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
      </dependency>
      <dependency>
         <!-- Spring ORM -->
         <groupId>org.springframework</groupId>
         <artifactId>spring-orm</artifactId>
      </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>
      </dependency>
      <!-- ============================================== -->
      <!-- ============== JASPERREPORTS ================= -->
      <!-- ============================================== -->
      <dependency>
         <!-- Jasper Reports -->
         <groupId>net.sf.jasperreports</groupId>
         <artifactId>jasperreports</artifactId>
         <version>${jasperreports.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>
         <!-- 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 SLF4J Bridge -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j18-impl</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <!-- Log4j Web -->
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-web</artifactId>
         <version>${log4j.version}</version>
      </dependency>
      <dependency>
         <!-- SL4J API -->
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j.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>
      <!-- ============================================== -->
      <!-- ======= TEST ENVIRONMENT DEPENDENCIES ======== -->
      <!-- ============================================== -->
      <dependency>
         <!-- Hamcrest -->
         <groupId>org.hamcrest</groupId>
         <artifactId>java-hamcrest</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>
         <version>${junit.jupiter.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <!-- JUnit Jupiter Platform -->
         <groupId>org.junit.platform</groupId>
         <artifactId>junit-platform-runner</artifactId>
         <version>${junit.platform.version}</version>
         <scope>test</scope>
      </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>
   </dependencies>

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

   <build>
      <defaultGoal>clean package</defaultGoal>
      <resources>
         <resource>
            <directory>src/main/resources/</directory>
         </resource>
         <resource>
            <!-- Main resources -->
            <directory>src/main/resources/</directory>
            <includes>
               <!-- Filter the application context -->
               <include>context/application-context.xml</include>
               <!-- Filter the persistence access properties -->
               <include>config/persistence-access.properties</include>
            </includes>
            <filtering>true</filtering>
         </resource>
      </resources>
      <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>
            <!-- Enforcer -->
            <!-- Stops the project from being built if it does not comply 
               with a set of rules. -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
               <!-- The enforce goal is bound to the validate phase -->
               <execution>
                  <id>enforce-database</id>
                  <goals>
                     <goal>enforce</goal>
                  </goals>
                  <configuration>
                     <rules>
                        <!-- A database should be set. -->
                        <requireProperty>
                           <property>database.tag</property>
                           <message><![CDATA[Give a Spring database profile.]]></message>
                        </requireProperty>
                        <requireProperty>
                           <property>database.url</property>
                           <message><![CDATA[Give a URL for the database.]]></message>
                        </requireProperty>
                        <requireProperty>
                           <property>database.username</property>
                           <message><![CDATA[Give a username for the database.]]></message>
                        </requireProperty>
                        <requireProperty>
                           <property>database.password</property>
                           <message><![CDATA[Give a password for the database.]]></message>
                        </requireProperty>
                     </rules>
                  </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>
                     <!-- Persistence access data is filtered -->
                     <filtering>true</filtering>
                     <directory>${project.basedir}/src/main/resources/config</directory>
                     <targetPath>WEB-INF/classes/config</targetPath>
                     <includes>
                        <include>persistence-access.properties</include>
                     </includes>
                  </resource>
                  <resource>
                     <!-- The UI template is filtered -->
                     <filtering>true</filtering>
                     <directory>${project.basedir}/src/main/webapp/WEB-INF/templates</directory>
                     <targetPath>WEB-INF/templates</targetPath>
                     <includes>
                        <include>index.html</include>
                     </includes>
                  </resource>
                  <resource>
                     <!-- Generated files -->
                     <directory>${project.build.directory}/generated-ui</directory>
                     <targetPath>resources/</targetPath>
                  </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>
      </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 - 2025 Weber Informatics LLC | Privacy Policy