<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is part of the Meeds project (https://meeds.io/).
Copyright (C) 2020 Meeds Association
contact@meeds.io
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

-->
<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>
  <groupId>io.meeds</groupId>
  <artifactId>maven-parent-pom</artifactId>
  <version>29-M01</version>
  <packaging>pom</packaging>
  <name>Meeds:: Parent POM</name>
  <description>Provides default project configuration for eXo projects</description>
  <url>${site.url}</url>
  <inceptionYear>2003</inceptionYear>
  <organization>
    <name>eXo Platform SAS</name>
    <url>http://www.exoplatform.com</url>
  </organization>
  <licenses>
    <license>
      <name>GNU Lesser General Public License, Version 3.0</name>
      <url>http://www.gnu.org/licenses/lgpl-3.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>exoswf</id>
      <name>eXo Platform SAS</name>
    </developer>
  </developers>
  <scm>
    <connection>scm:git:git://github.com/Meeds-io/maven-parent-pom.git</connection>
    <developerConnection>scm:git:git@github.com:Meeds-io/maven-parent-pom.git</developerConnection>
    <tag>29-M01</tag>
    <url>https://github.com/Meeds-io/maven-parent-pom</url>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>${jira.base.url}/browse/${jira.project.key}/</url>
  </issueManagement>
  <ciManagement>
    <system>jenkins</system>
    <url>${jenkins.base.url}/job/${jenkins.job.name}/</url>
  </ciManagement>
  <distributionManagement>
    <repository>
      <id>repository.exoplatform.org</id>
      <url>${exo.releases.repo.url}</url>
    </repository>
    <snapshotRepository>
      <id>repository.exoplatform.org</id>
      <url>${exo.snapshots.repo.url}</url>
    </snapshotRepository>
    <site>
      <id>repository.exoplatform.org</id>
      <url>${site.deploy.url}</url>
    </site>
  </distributionManagement>
  <properties>
    <argLine />
    <surefire.argLine>--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.xml/jdk.xml.internal=ALL-UNNAMED --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED --add-opens=java.base/jdk.internal.module=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.base/javax.net.ssl=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.management/java.lang.management=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED</surefire.argLine>
    <exo.product.name>${project.name}</exo.product.name>
    <!-- **************************************** -->
    <!-- Jira Settings                            -->
    <!-- **************************************** -->
    <jira.base.url>https://jira.exoplatform.org</jira.base.url>
    <jira.project.key>PAR</jira.project.key>
    <!-- **************************************** -->
    <!-- Jenkins Settings                         -->
    <!-- **************************************** -->
    <jenkins.base.url>https://ci.exoplatform.org</jenkins.base.url>
    <jenkins.job.name>maven-parent-pom-master-ci</jenkins.job.name>
    <!-- **************************************** -->
    <!-- Sonar Settings                           -->
    <!-- **************************************** -->
    <sonar.host.url>https://sonar.exoplatform.org/</sonar.host.url>
    <!-- **************************************** -->
    <!-- Repositories URLs                        -->
    <!-- **************************************** -->
    <exo.releases.repo.url>https://repository.exoplatform.org/service/local/staging/deploy/maven2/</exo.releases.repo.url>
    <exo.snapshots.repo.url>https://repository.exoplatform.org/content/repositories/meeds-snapshots</exo.snapshots.repo.url>
    <exo.public.repo.url>http://repository.exoplatform.org/public/</exo.public.repo.url>
    <!-- **************************************** -->
    <!-- Site URL                                 -->
    <!-- **************************************** -->
    <site.url>https://projects.exoplatform.org</site.url>
    <site.deploy.url>dav:${site.url}</site.deploy.url>
    <!-- **************** -->
    <!-- Plugins versions -->
    <!-- **************** -->
    <version.antrun.plugin>1.8</version.antrun.plugin>
    <version.assembly.plugin>3.6.0</version.assembly.plugin>
    <version.buildhelper.plugin>1.10</version.buildhelper.plugin>
    <version.buildnumber.plugin>1.4</version.buildnumber.plugin>
    <version.bsc.processor.plugin>5.1</version.bsc.processor.plugin>
    <version.clean.plugin>3.3.2</version.clean.plugin>
    <version.changes.plugin>2.12.1</version.changes.plugin>
    <version.compiler.plugin>3.11.0</version.compiler.plugin>
    <version.dependency.plugin>3.3.0</version.dependency.plugin>
    <version.deploy.plugin>2.8.2</version.deploy.plugin>
    <version.eclipse.plugin>2.10</version.eclipse.plugin>
    <version.enforcer.plugin>3.4.1</version.enforcer.plugin>
    <version.failsafe.plugin>${version.surefire.plugin}</version.failsafe.plugin>
    <version.gmaven.plugin>1.5</version.gmaven.plugin>
    <version.gmavenplus.plugin>1.5</version.gmavenplus.plugin>
    <version.gpg.plugin>3.1.0</version.gpg.plugin>
    <version.idea.plugin>2.2.1</version.idea.plugin>
    <version.install.plugin>3.1.1</version.install.plugin>
    <version.jacoco.plugin>0.8.11</version.jacoco.plugin>
    <version.jar.plugin>3.3.0</version.jar.plugin>
    <version.javadoc.plugin>3.6.3</version.javadoc.plugin>
    <plugin.aspectj.version>1.15.0</plugin.aspectj.version>
    <org.aspectj.version>1.9.22.1</org.aspectj.version>
    <!-- PAR-222 : jdocbook 2.3.6+ has a perf issue. See MPJDOCBOOK-84 -->
    <version.jdocbook.plugin>2.3.5</version.jdocbook.plugin>
    <version.jibx.plugin>1.3.1</version.jibx.plugin>
    <version.jxr.plugin>2.5</version.jxr.plugin>
    <version.lesscss.plugin>1.7.0.1.1</version.lesscss.plugin>
    <version.license.plugin>1.8</version.license.plugin>
    <version.mycila-license.plugin>2.11</version.mycila-license.plugin>
    <version.project-info-reports.plugin>2.9</version.project-info-reports.plugin>
    <checkstyle-maven-plugin.version>3.6.0</checkstyle-maven-plugin.version>
    <!-- PAR-398: Workaround to use clirr plugin with Java 8 (To remove when clirr 2.8 is released) -->
    <version.project-info-reports-shade.plugin>1.2</version.project-info-reports-shade.plugin>
    <version.project-info-reports-bcel-findbugs.plugin>6.0</version.project-info-reports-bcel-findbugs.plugin>
    <version.plugin.plugin>3.10.2</version.plugin.plugin>
    <version.release.plugin>3.0.1</version.release.plugin>
    <version.remote-resources.plugin.version>1.5</version.remote-resources.plugin.version>
    <version.resources.plugin>3.2.0</version.resources.plugin>
    <version.shade.plugin>3.5.3</version.shade.plugin>
    <version.site.plugin>3.4</version.site.plugin>
    <version.sonar-maven-report.plugin>0.1</version.sonar-maven-report.plugin>
    <version.source.plugin>3.0.0</version.source.plugin>
    <version.surefire.plugin>3.2.3</version.surefire.plugin>
    <version.taglist.plugin>2.4</version.taglist.plugin>
    <version.tomcat7.plugin>2.2</version.tomcat7.plugin>
    <version.versions.plugin>2.16.2</version.versions.plugin>
    <version.war.plugin>3.3.2</version.war.plugin>
    <version.xml.plugin>1.0</version.xml.plugin>
    <version.owasp.dependency-check-maven.plugin>3.2.0</version.owasp.dependency-check-maven.plugin>
    <org.lombok.plugin.version>1.18.20.0</org.lombok.plugin.version>
    <org.lombok.version>1.18.34</org.lombok.version>
    <com.github.eirslett.frontend.version>1.15.0</com.github.eirslett.frontend.version>
    <io.openapitools.swagger.version>2.1.6</io.openapitools.swagger.version>
    <node.version>v16.0.0</node.version>
    <npm.version>7.11.2</npm.version>
    <!-- *************** -->
    <!-- Others versions -->
    <!-- *************** -->
    <version.animal-sniffer.enforcer-rule>1.18</version.animal-sniffer.enforcer-rule>
    <!-- PAR-193 : performances boost workaround -->
    <version.plexus-utils>3.0.18</version.plexus-utils>
    <!-- PAR-155 : Produce project sources package distribution -->
    <version.apache-source-release-assembly-descriptor>1.0.4</version.apache-source-release-assembly-descriptor>
    <!-- PAR-92 : Bundle used to manage file headers -->
    <version.exo-lgpl-license-resource-bundle>2</version.exo-lgpl-license-resource-bundle>
    <!-- ************** -->
    <!-- Build settings -->
    <!-- ************** -->
    <!-- Cross plugins settings -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- maven-clirr-plugin -->
    <textOutputFile>${project.build.directory}/clirr-report.txt</textOutputFile>
    <!-- maven-compiler-plugin -->
    <maven.compiler.target>21</maven.compiler.target>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>
    <maven.compiler.showWarnings>true</maven.compiler.showWarnings>
    <!-- maven-dependency-plugin -->
    <repoUrl>${exo.public.repo.url}</repoUrl>
    <!-- maven-enforcer-plugin -->
    <maven.min.version>3.9.0</maven.min.version>
    <jdk.min.version>${maven.compiler.source}</jdk.min.version>
    <exo.release.enforce.requirePluginVersions.banSnapshots>true</exo.release.enforce.requirePluginVersions.banSnapshots>
    <!-- Extra enforcer rules -->
    <extra-enforcer-rules.version>1.8.0</extra-enforcer-rules.version>
    <!-- gmaven-plugin -->
    <gmaven-plugin.providerSelection>2.0</gmaven-plugin.providerSelection>
    <!-- maven-gpg-plugin -->
    <gpg.useagent>true</gpg.useagent>
    <!-- maven-gwt-plugin -->
    <gwt.draftCompile>false</gwt.draftCompile>
    <gwt.compiler.optimizationLevel>0</gwt.compiler.optimizationLevel>
    <gwt.compiler.disableAggressiveOptimization>true</gwt.compiler.disableAggressiveOptimization>
    <gwt.style>DETAILED</gwt.style>
    <!-- maven-idea-plugin & maven-eclipse-plugin -->
    <downloadSources>true</downloadSources>
    <!--  maven-javadoc-plugin -->
    <detectOfflineLinks>false</detectOfflineLinks>
    <maven.javadoc.skip>false</maven.javadoc.skip>
    <maven.javadoc.jar.skip>${maven.javadoc.skip}</maven.javadoc.jar.skip>
    <!-- too slow : http://jira.codehaus.org/browse/MJAVADOC-268 -->
    <quiet>true</quiet>
    <!-- These properties are automatically computed during the build -->
    <parsedVersion.majorVersion>N/A</parsedVersion.majorVersion>
    <!-- maven-war-plugin -->
    <useCache>true</useCache>
    <archiveClasses>false</archiveClasses>
    <maven.war.attachClasses>false</maven.war.attachClasses>
    <!-- maven-surefire-plugin -->
    <test.logging.level>WARN</test.logging.level>
    <!-- Additional properties to activate the compression of already compressed archives - time expensive -->
    <maven.assembly.recompressZippedFiles>false</maven.assembly.recompressZippedFiles>
    <maven.war.recompressZippedFiles>false</maven.war.recompressZippedFiles>
    <!-- ************************ -->
    <!-- Sonar/Reporting settings -->
    <!-- ************************ -->
    <sonar.java.target>${maven.compiler.target}</sonar.java.target>
    <sonar.java.source>${maven.compiler.source}</sonar.java.source>
    <!-- Sonar/Jacoco integration. Note that these properties need to be defined outside the "coverage" profile
         because we want to be to able to execute mvn sonar:sonar without passing a profile -->
    <!-- Tells Sonar to use jacoco for coverage results -->
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <!-- The Sonar Jacoco Listener for JUnit to extract coverage details per test -->
    <sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
    <!-- The system property jacoco.outputDir needs to be override on the command line
         with an absolute path if you want to merge results from all modules.
         Example in a Jenkisn build where ${WORKSPACE} is defined and your project in the root directory of the workspace :
            mvn clean install -Prun-its,coverage -Djacoco.outputDir=${WORKSPACE}/target
         Note that unfortunately using the following does not work because of
         http://jira.codehaus.org/browse/SONAR-3427:
            <jacoco.outputDir>${session.executionRootDirectory}/target/</jacoco.outputDir>
    -->
    <jacoco.outputDir>${project.build.directory}</jacoco.outputDir>
    <!-- Tells Sonar where the Jacoco coverage result file is located for Unit Tests -->
    <sonar.jacoco.reportPath>${jacoco.outputDir}/jacoco.exec</sonar.jacoco.reportPath>
    <!-- Tells Sonar where the Jacoco coverage result file is located for Integration Tests -->
    <sonar.jacoco.itReportPath>${jacoco.outputDir}/jacoco-it.exec</sonar.jacoco.itReportPath>
    <!-- Tells Sonar where the Jacoco coverage result file is located for merged Integration and Unit Tests coverage -->
    <sonar.jacoco.reportPaths>${jacoco.outputDir}/jacoco-all.exec</sonar.jacoco.reportPaths>
    <!-- Tells Sonar where the Jacoco coverage xml result file are located -->
    <sonar.coverage.jacoco.xmlReportPaths>target/site/test-coverage-ut/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
    <!-- The listener used to compute coverage per test -->
    <!-- JUnit : org.sonar.java.jacoco.JUnitListener -->
    <!-- TestNG : org.sonar.java.jacoco.TestNGListener -->
    <jacoco.listener>org.sonar.java.jacoco.JUnitListener</jacoco.listener>
    <!-- Minimal test coverage ratio to reach to make the build pass (from 0.0 to 1.0)
         We intentionally set it to 100% by default to force all projects to define their own ratio -->
    <exo.test.coverage.ratio>1.0</exo.test.coverage.ratio>
    
    
    <!-- Sonar commun properties -->
    <sonar.projectKey>${project.groupId}</sonar.projectKey>
    <sonar.host.url>https://sonarcloud.io</sonar.host.url>
    <sonar.moduleKey>${project.artifactId}</sonar.moduleKey>
    <sonar.coverage.exclusions>**/*.vue,**/*.js</sonar.coverage.exclusions>
    <checkstyle-maven-plugin.failOnError>false</checkstyle-maven-plugin.failOnError>
    <checkstyle-maven-plugin.failOnViolation>false</checkstyle-maven-plugin.failOnViolation>
  </properties>
  <build>
    <pluginManagement>
      <!-- All plugins ordered by shortname (antrun, assembly ...) -->
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>${version.antrun.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>${version.assembly.plugin}</version>
          <configuration>
            <!-- Perfs improvements - PAR-191 -->
            <useJvmChmod>true</useJvmChmod>
            <!-- Allow to activate/deactivate the recompression of zip files -->
            <recompressZippedFiles>${maven.assembly.recompressZippedFiles}</recompressZippedFiles>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.bsc.maven</groupId>
          <artifactId>maven-processor-plugin</artifactId>
          <version>${version.bsc.processor.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>${version.buildhelper.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <version>${version.buildnumber.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <version>${version.changes.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>${version.clean.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${version.compiler.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>${version.dependency.plugin}</version>
          <configuration>
            <!-- Perfs improvements - PAR-191 -->
            <useJvmChmod>true</useJvmChmod>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${version.deploy.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>${version.eclipse.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${version.enforcer.plugin}</version>
          <dependencies>
            <dependency>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>extra-enforcer-rules</artifactId>
              <version>${extra-enforcer-rules.version}</version>
            </dependency>
            <dependency>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>animal-sniffer-enforcer-rule</artifactId>
              <version>${version.animal-sniffer.enforcer-rule}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${version.failsafe.plugin}</version>
          <configuration>
            <systemPropertyVariables>
              <!-- To avoid conflicts on CI server - PAR-192 -->
              <!-- There is an incompatibility with Byteman - used in social -->
              <!-- <java.io.tmpdir>${project.build.directory}</java.io.tmpdir> -->
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>gmaven-plugin</artifactId>
          <version>${version.gmaven.plugin}</version>
          <configuration>
            <providerSelection>${gmaven-plugin.providerSelection}</providerSelection>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.gmavenplus</groupId>
          <artifactId>gmavenplus-plugin</artifactId>
          <version>${version.gmavenplus.plugin}</version>
          <configuration>
            <targetBytecode>${maven.compiler.target}</targetBytecode>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>${version.gpg.plugin}</version>
          <configuration>
            <passphrase>${gpg.passphrase}</passphrase>
            <useAgent>${gpg.useagent}</useAgent>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-idea-plugin</artifactId>
          <version>${version.idea.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>${version.install.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${version.jacoco.plugin}</version>
          <configuration>
            <excludes>
              <exclude>**/entity/*.class</exclude>
              <exclude>**/model/*.class</exclude>
              <exclude>**/constant/*.class</exclude>
              <exclude>**/entity/**/*.class</exclude>
              <exclude>**/model/**/*.class</exclude>
              <exclude>**/constant/**/*.class</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${version.jar.plugin}</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
              <manifestEntries>
                <Date>${maven.build.timestamp}</Date>
                <Implementation-URL>${project.url}</Implementation-URL>
                <SCM-URL>${project.scm.connection}</SCM-URL>
                <SCM-Revision>${buildNumber}</SCM-Revision>
                <Specification-Title>${exo.product.name}</Specification-Title>
                <Specification-Version>${parsedVersion.majorVersion}.0</Specification-Version>
                <Specification-Vendor>${project.organization.name}</Specification-Vendor>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${version.javadoc.plugin}</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
              <manifestEntries>
                <Date>${maven.build.timestamp}</Date>
                <Implementation-URL>${project.url}</Implementation-URL>
                <SCM-URL>${project.scm.connection}</SCM-URL>
                <SCM-Revision>${buildNumber}</SCM-Revision>
                <Specification-Title>${exo.product.name}</Specification-Title>
                <Specification-Version>${parsedVersion.majorVersion}.0</Specification-Version>
                <Specification-Vendor>${project.organization.name}</Specification-Vendor>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
              </manifestEntries>
            </archive>
            <tags>
              <tag>
                <name>LevelAPI</name>
                <placement>a</placement>
                <head>eXo level API</head>
              </tag>
              <tag>
                <name>anchor</name>
                <placement>a</placement>
                <head>eXo anchor for generated doc on REST API</head>
              </tag>
              <tag>
                <name>request</name>
                <placement>a</placement>
                <head>eXo anchor for generated doc on REST API</head>
              </tag>
              <tag>
                <name>response</name>
                <placement>a</placement>
                <head>eXo response for generated doc on REST API</head>
              </tag>
              <tag>
                <name>format</name>
                <placement>a</placement>
                <head>eXo format for generated doc on REST API</head>
              </tag>
              <tag>
                <name>authentication</name>
                <placement>a</placement>
                <head>eXo authentication for generated doc on REST API</head>
              </tag>
              <tag>
                <name>notificationId</name>
                <placement>a</placement>
                <head>eXo notificationId for generated doc on REST API</head>
              </tag>
            </tags>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>aspectj-maven-plugin</artifactId>
          <version>${plugin.aspectj.version}</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
            <complianceLevel>${maven.compiler.target}</complianceLevel>
            <encoding>${project.build.sourceEncoding}</encoding>
            <showWeaveInfo>true</showWeaveInfo>
            <verbose>true</verbose>
            <Xlint>warning</Xlint>
            <forceAjcCompile>true</forceAjcCompile>
            <sources />
            <weaveDirectories>
              <weaveDirectory>${project.build.directory}/classes</weaveDirectory>
            </weaveDirectories>
          </configuration>
          <executions>
            <execution>
              <phase>process-classes</phase>
              <goals>
                <goal>compile</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>com.github.eirslett</groupId>
          <artifactId>frontend-maven-plugin</artifactId>
          <version>${com.github.eirslett.frontend.version}</version>
          <configuration>
            <installDirectory>target</installDirectory>
          </configuration>
          <executions>
            <execution>
              <id>install node and npm</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>install-node-and-npm</goal>
              </goals>
              <configuration>
                <nodeVersion>${node.version}</nodeVersion>
                <npmVersion>${npm.version}</npmVersion>
              </configuration>
            </execution>
            <execution>
              <id>npm install</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>npm</goal>
              </goals>
              <configuration>
                <arguments>install</arguments>
              </configuration>
            </execution>
            <execution>
              <id>npm run build</id>
              <phase>prepare-package</phase>
              <goals>
                <goal>npm</goal>
              </goals>
              <configuration>
                <arguments>run build</arguments>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>io.openapitools.swagger</groupId>
          <artifactId>swagger-maven-plugin</artifactId>
          <version>${io.openapitools.swagger.version}</version>
          <configuration>
            <outputDirectory>${basedir}/target/</outputDirectory>
            <outputFilename>swagger</outputFilename>
            <outputFormats>JSON,YAML</outputFormats>
            <prettyPrint>true</prettyPrint>
            <attachSwaggerArtifact>true</attachSwaggerArtifact>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>generate</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>io.swagger.core.v3</groupId>
              <artifactId>swagger-annotations</artifactId>
              <version>2.2.19</version>
            </dependency>
            <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>javax.servlet-api</artifactId>
              <version>4.0.1</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.jboss.maven.plugins</groupId>
          <artifactId>maven-jdocbook-plugin</artifactId>
          <version>${version.jdocbook.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.jibx</groupId>
          <artifactId>maven-jibx-plugin</artifactId>
          <version>${version.jibx.plugin}</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.bcel</groupId>
              <artifactId>bcel</artifactId>
              <version>6.3</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
          <version>${version.jxr.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.lesscss</groupId>
          <artifactId>lesscss-maven-plugin</artifactId>
          <version>${version.lesscss.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>${version.license.plugin}</version>
        </plugin>
        <!-- It should be merged in the mojo plugin -->
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>${version.mycila-license.plugin}</version>
          <!-- Add a dependency since this is where the maven-license-plugin plugin will find the license-header.txt file -->
          <dependencies>
            <dependency>
              <groupId>org.exoplatform.resources</groupId>
              <artifactId>exo-lgpl-license-resource-bundle</artifactId>
              <version>${version.exo-lgpl-license-resource-bundle}</version>
            </dependency>
          </dependencies>
          <configuration>
            <header>org/exoplatform/resources/license-header.txt</header>
            <properties>
              <!-- Values to be substituted in template -->
              <h_inceptionYear>${project.inceptionYear}</h_inceptionYear>
              <h_currentYear>${currentYear}</h_currentYear>
              <h_copyrightOwner>${project.organization.name}</h_copyrightOwner>
            </properties>
            <failIfMissing>false</failIfMissing>
            <strictCheck>true</strictCheck>
            <!-- Our Java isn't the default so we need to change the mapping (We use /* and not /**) -->
            <headerDefinitions>
              <headerDefinition>org/exoplatform/resources/javadoc_style.xml</headerDefinition>
            </headerDefinitions>
            <!-- We're only interested in checking our sources and our POMs -->
            <includes>
              <include>src/**</include>
              <include>pom.xml</include>
            </includes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>${version.plugin.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>${version.release.plugin}</version>
          <configuration>
            <!-- maven-release-plugin -->
            <goals>deploy</goals>
            <useReleaseProfile>false</useReleaseProfile>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <arguments>-Pexo-release ${arguments}</arguments>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>${version.remote-resources.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.shared</groupId>
              <artifactId>maven-shared-jar</artifactId>
              <version>${version.project-info-reports-shade.plugin}</version>
              <exclusions>
                <exclusion>
                  <artifactId>bcel</artifactId>
                  <groupId>org.apache.bcel</groupId>
                </exclusion>
              </exclusions>
            </dependency>
            <dependency>
              <groupId>com.google.code.findbugs</groupId>
              <artifactId>bcel-findbugs</artifactId>
              <version>${version.project-info-reports-bcel-findbugs.plugin}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>${version.resources.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>${version.site.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>${version.shade.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.sonar-plugins</groupId>
          <artifactId>maven-report</artifactId>
          <version>${version.sonar-maven-report.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>${version.source.plugin}</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
              <manifestEntries>
                <Date>${maven.build.timestamp}</Date>
                <Implementation-URL>${project.url}</Implementation-URL>
                <SCM-URL>${project.scm.connection}</SCM-URL>
                <SCM-Revision>${buildNumber}</SCM-Revision>
                <Specification-Title>${exo.product.name}</Specification-Title>
                <Specification-Version>${parsedVersion.majorVersion}.0</Specification-Version>
                <Specification-Vendor>${project.organization.name}</Specification-Vendor>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
            <argLine>@{argLine} @{surefire.argLine}</argLine>
            <systemPropertyVariables>
              <!-- To avoid conflicts on CI server - PAR-192 -->
              <!-- There is an incompatibility with Byteman - used in social -->
              <!-- <java.io.tmpdir>${project.build.directory}</java.io.tmpdir> -->
              <!-- PAR-226 : Generate tests data inside target dir -->
              <com.arjuna.ats.arjuna.objectstore.objectStoreDir>${project.build.directory}</com.arjuna.ats.arjuna.objectstore.objectStoreDir>
              <ObjectStoreEnvironmentBean.objectStoreDir>${project.build.directory}</ObjectStoreEnvironmentBean.objectStoreDir>
              <gatein.test.tmp.dir>${project.build.directory}</gatein.test.tmp.dir>
              <gatein.test.output.path>${project.build.directory}</gatein.test.output.path>
              <gatein.email.domain.url>http://localhost:8080</gatein.email.domain.url>
              <exo.files.storage.dir>target/files</exo.files.storage.dir>
              <liquibase.showBanner>false</liquibase.showBanner>
              <liquibase.command.showSummary>OFF</liquibase.command.showSummary>
              <liquibase.hub.mode>OFF</liquibase.hub.mode>
              <liquibase.logLevel>WARNING</liquibase.logLevel>
              <logback.statusListenerClass>ch.qos.logback.core.status.NopStatusListener</logback.statusListenerClass>
              <io.meeds.logging.level>${test.logging.level}</io.meeds.logging.level>
              <org.exoplatform.container.configuration.debug>true</org.exoplatform.container.configuration.debug>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>${version.surefire.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>${version.tomcat7.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>${version.versions.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>${version.war.plugin}</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
              <manifestEntries>
                <Date>${maven.build.timestamp}</Date>
                <Implementation-URL>${project.url}</Implementation-URL>
                <SCM-URL>${project.scm.connection}</SCM-URL>
                <SCM-Revision>${buildNumber}</SCM-Revision>
                <Specification-Title>${exo.product.name}</Specification-Title>
                <Specification-Version>${parsedVersion.majorVersion}.0</Specification-Version>
                <Specification-Vendor>${project.organization.name}</Specification-Vendor>
                <Implementation-Title>${project.name}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
              </manifestEntries>
            </archive>
            <!-- PAR-145 : Be sure that all product package all their classes in JAR (No stand alone classes in WEB-INF/classes) -->
            <archiveClasses>${archiveClasses}</archiveClasses>
            <attachClasses>${maven.war.attachClasses}</attachClasses>
            <useCache>${useCache}</useCache>
            <packagingExcludes>**/*.less,**/less/**,**/*.vue,vue-apps/**,vue-app/**</packagingExcludes>
            <!-- Allow to activate/deactivate the recompression of zip files -->
            <recompressZippedFiles>${maven.war.recompressZippedFiles}</recompressZippedFiles>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>xml-maven-plugin</artifactId>
          <version>${version.xml.plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>${checkstyle-maven-plugin.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <consoleOutput>true</consoleOutput>
          <failsOnError>${checkstyle-maven-plugin.failOnError}</failsOnError>
          <failOnViolation>${checkstyle-maven-plugin.failOnViolation}</failOnViolation>
          <checkstyleRules>
            <module name="Checker">
              <property name="fileExtensions" value="java, xml" />
              <property name="tabWidth" value="2" />

              <!-- Excludes all 'module-info.java' files              -->
              <!-- See https://checkstyle.org/filefilters/index.html -->
              <module name="BeforeExecutionExclusionFileFilter">
                <property name="fileNamePattern" value="module\-info\.java$" />
              </module>

              <!-- Checks whether files end with a new line.                        -->
              <!-- See https://checkstyle.org/checks/misc/newlineatendoffile.html -->
              <module name="NewlineAtEndOfFile" />

              <!-- Checks that property files contain the same keys.         -->
              <!-- See https://checkstyle.org/checks/misc/translation.html -->
              <module name="Translation" />

              <!-- Checks for Size Violations.                    -->
              <!-- See https://checkstyle.org/checks/sizes/index.html -->

              <module name="FileLength">
                <property name="max" value="1500" />
                <property name="fileExtensions" value="java" />
              </module>
              <module name="LineLength">
                <property name="max" value="200" />
              </module>

              <!-- Checks for whitespace                               -->
              <!-- See https://checkstyle.org/checks/whitespace/index.html -->
              <module name="FileTabCharacter" />

              <!-- Miscellaneous other checks.                   -->
              <!-- See https://checkstyle.org/checks/misc/index.html -->
              <module name="RegexpSingleline">
                <property name="format" value="\s+$" />
                <property name="minimum" value="0" />
                <property name="maximum" value="0" />
                <property name="message" value="Line has trailing spaces." />
              </module>

              <module name="TreeWalker">

                <!-- Checks for Javadoc comments.                     -->
                <!-- See https://checkstyle.org/checks/javadoc/index.html -->
                <module name="InvalidJavadocPosition" />
                <module name="JavadocMethod" />
                <module name="JavadocType" />
                <module name="JavadocVariable" />
                <module name="JavadocStyle" />

                <!-- Checks for Naming Conventions.                  -->
                <!-- See https://checkstyle.org/checks/naming/index.html -->
                <module name="ConstantName" />
                <module name="LocalFinalVariableName" />
                <module name="LocalVariableName" />
                <module name="MemberName" />
                <module name="MethodName" />
                <module name="PackageName" />
                <module name="ParameterName" />
                <module name="StaticVariableName" />
                <module name="TypeName" />

                <!-- Checks for imports                              -->
                <!-- See https://checkstyle.org/checks/imports/index.html -->
                <module name="AvoidStarImport" />
                <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
                <module name="RedundantImport" />
                <module name="UnusedImports">
                  <property name="processJavadoc" value="false" />
                </module>

                <!-- Checks for Size Violations.                    -->
                <!-- See https://checkstyle.org/checks/sizes/index.html -->
                <module name="MethodLength" />
                <module name="ParameterNumber" />

                <!-- Checks for whitespace                               -->
                <!-- See https://checkstyle.org/checks/whitespace/index.html -->
                <module name="EmptyForIteratorPad" />
                <module name="GenericWhitespace" />
                <module name="MethodParamPad" />
                <module name="NoWhitespaceAfter" />
                <module name="NoWhitespaceBefore" />
                <module name="OperatorWrap" />
                <module name="ParenPad" />
                <module name="TypecastParenPad" />
                <module name="WhitespaceAfter" />
                <module name="WhitespaceAround" />

                <!-- Modifier Checks                                    -->
                <!-- See https://checkstyle.org/checks/modifier/index.html -->
                <module name="ModifierOrder" />
                <module name="RedundantModifier" />

                <!-- Checks for blocks. You know, those {}'s         -->
                <!-- See https://checkstyle.org/checks/blocks/index.html -->
                <module name="AvoidNestedBlocks" />
                <module name="EmptyBlock" />
                <module name="LeftCurly" />
                <module name="NeedBraces" />
                <module name="RightCurly" />

                <!-- Checks for common coding problems               -->
                <!-- See https://checkstyle.org/checks/coding/index.html -->
                <module name="EmptyStatement" />
                <module name="EqualsHashCode" />
                <module name="HiddenField" />
                <module name="IllegalInstantiation" />
                <module name="InnerAssignment" />
                <module name="MagicNumber" />
                <module name="MissingSwitchDefault" />
                <module name="MultipleVariableDeclarations" />
                <module name="SimplifyBooleanExpression" />
                <module name="SimplifyBooleanReturn" />

                <!-- Checks for class design                         -->
                <!-- See https://checkstyle.org/checks/design/index.html -->
                <module name="DesignForExtension" />
                <module name="FinalClass" />
                <module name="HideUtilityClassConstructor" />
                <module name="InterfaceIsType" />
                <module name="VisibilityModifier" />

                <!-- Miscellaneous other checks.                   -->
                <!-- See https://checkstyle.org/checks/misc/index.html -->
                <module name="ArrayTypeStyle" />
                <module name="TodoComment" />
                <module name="UpperEll" />

              </module>
            </module>
          </checkstyleRules>
        </configuration>
        <executions>
          <execution>
            <id>validate</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>parse-version</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>create</goal>
            </goals>
            <configuration>
              <buildNumberPropertyName>buildNumber</buildNumberPropertyName>
              <revisionOnScmFailure>no_revision</revisionOnScmFailure>
              <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
              <timestampFormat>{0, date,yyyyMMdd}</timestampFormat>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- Maven Plugin for generating contracts JAVA sources -->
      <plugin>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok-maven-plugin</artifactId>
        <version>${org.lombok.plugin.version}</version>
        <dependencies>
	    <dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>${org.lombok.version}</version>
	    </dependency>
	</dependencies>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>delombok</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>${version.project-info-reports.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${version.dependency.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${version.javadoc.plugin}</version>
        <reportSets>
          <reportSet>
            <id>aggregate</id>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>${version.jxr.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
        <version>${version.taglist.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>${version.versions.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${version.changes.plugin}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <useJql>true</useJql>
          <maxEntries>1000</maxEntries>
          <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
          <onlyCurrentVersion>true</onlyCurrentVersion>
          <statusIds>Resolved,Closed,Done</statusIds>
          <resolutionIds>Fixed,Won't Fix,Duplicate,Incomplete,Cannot Reproduce,Workaround,Normal Behavior,Done</resolutionIds>
          <columnNames>Priority,Type,Key,Summary,Component,Status,Resolution,Fix Version</columnNames>
          <sortColumnNames>Fix Version DESC,Type DESC,Priority DESC</sortColumnNames>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>maven-report</artifactId>
        <version>${version.sonar-maven-report.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>${version.surefire.plugin}</version>
      </plugin>
      <plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <version>${version.owasp.dependency-check-maven.plugin}</version>
        <reportSets>
          <reportSet>
            <id>aggregate</id>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
  <profiles>
    <profile>
      <id>enforce</id>
      <activation>
        <property>
          <name>!skip-enforce</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-java-version</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireJavaVersion>
                      <message>To build this project JDK ${jdk.min.version} (or upper) is required. Please install it.</message>
                      <version>${jdk.min.version}</version>
                    </requireJavaVersion>
                  </rules>
                </configuration>
              </execution>
              <execution>
                <id>enforce-maven-version</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireMavenVersion>
                      <message>To build this project Maven ${maven.min.version} (or upper) is required. Please install it.</message>
                      <version>${maven.min.version}</version>
                    </requireMavenVersion>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>sources</id>
      <activation>
        <property>
          <name>!skip-sources</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
            <inherited>true</inherited>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- This profile is activated when a project is released. -->
    <profile>
      <id>exo-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <release>${maven.compiler.source}</release>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-plugin-versions</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requirePluginVersions>
                      <message>Best practice is to always define plugin versions! Plugins must be released released (no SNAPSHOT) and without using keywords RELEASE or LATEST!</message>
                      <banLatest>true</banLatest>
                      <banRelease>true</banRelease>
                      <banSnapshots>${exo.release.enforce.requirePluginVersions.banSnapshots}</banSnapshots>
                    </requirePluginVersions>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!--
            Generates Javadoc
           -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs-single</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <skip>${maven.javadoc.jar.skip}</skip>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Create a source-release artifact that contains the fully buildable
               project directory source structure. This is the artifact which is
               the official subject of any release vote. -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptorRefs>
                    <descriptorRef>source-release</descriptorRef>
                  </descriptorRefs>
                  <tarLongFileMode>gnu</tarLongFileMode>
                  <appendAssemblyId>true</appendAssemblyId>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>org.apache.apache.resources</groupId>
                <artifactId>apache-source-release-assembly-descriptor</artifactId>
                <version>${version.apache-source-release-assembly-descriptor}</version>
              </dependency>
            </dependencies>
          </plugin>
          <!-- We want to sign the artifact, the POM, and all attached artifacts -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- Validate wellformedness of (almost) all XML files -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>xml-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>validate-xml-files</id>
                <goals>
                  <goal>validate</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <validationSets>
                <validationSet>
                  <dir>src/main/resources</dir>
                  <includes>
                    <include>**/*.xml</include>
                  </includes>
                </validationSet>
              </validationSets>
            </configuration>
          </plugin>
          <!-- Creating current year element -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>compute-year</id>
                <goals>
                  <goal>timestamp-property</goal>
                </goals>
                <configuration>
                  <locale>en,US</locale>
                  <name>currentYear</name>
                  <pattern>yyyy</pattern>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Adding header to file -->
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>check-headers</id>
                <phase>validate</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <properties>
        <!-- Additional properties to activate the compression of already compressed archives - time expensive -->
        <maven.assembly.recompressZippedFiles>true</maven.assembly.recompressZippedFiles>
        <maven.war.recompressZippedFiles>true</maven.war.recompressZippedFiles>
        <!-- GWT optimizations -->
        <gwt.draftCompile>false</gwt.draftCompile>
        <gwt.compiler.optimizationLevel>9</gwt.compiler.optimizationLevel>
        <gwt.compiler.disableAggressiveOptimization>false</gwt.compiler.disableAggressiveOptimization>
        <gwt.style>OBF</gwt.style>
      </properties>
    </profile>
    <!--
    This profile is used to launch integration tests with the failsafe plugin
    http://maven.apache.org/plugins/maven-failsafe-plugin/
     -->
    <profile>
      <id>run-its</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
              <trimStackTrace>false</trimStackTrace>
              <argLine>@{argLine} --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED --add-opens=java.base/jdk.internal.module=ALL-UNNAMED --add-opens=java.base/java.lang.module=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio.channels=ALL-UNNAMED --add-opens=java.base/java.nio.channels.spi=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.jar=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.base/javax.net.ssl=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED</argLine>
            </configuration>
            <executions>
              <execution>
                <id>integration-test</id>
                <phase>integration-test</phase>
                <goals>
                  <goal>integration-test</goal>
                </goals>
              </execution>
              <execution>
                <id>verify</id>
                <phase>verify</phase>
                <goals>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
    This profile executes tests coverage for UTs and ITs with Jacoco.
    -->
    <profile>
      <id>coverage</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <configuration>
                <!-- Specific to generate mapping between tests and covered code -->
                <properties>
                  <property>
                    <name>listener</name>
                    <value>${jacoco.listener}</value>
                  </property>
                </properties>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-failsafe-plugin</artifactId>
              <configuration>
                <!-- Specific to generate mapping between tests and covered code -->
                <properties>
                  <property>
                    <name>listener</name>
                    <value>${jacoco.listener}</value>
                  </property>
                </properties>
                <!-- Let's put failsafe reports with surefire to have access to tests failures/success reports in sonar -->
                <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${version.jacoco.plugin}</version>
            <executions>
              <execution>
                <id>prepare-ut-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
                <configuration>
                  <destFile>${sonar.jacoco.reportPath}</destFile>
                  <append>true</append>
                </configuration>
              </execution>
              <execution>
                <id>prepare-it-agent</id>
                <goals>
                  <goal>prepare-agent-integration</goal>
                </goals>
                <configuration>
                  <destFile>${sonar.jacoco.itReportPath}</destFile>
                  <append>true</append>
                </configuration>
              </execution>
              <execution>
                <id>check-coverage</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <rules>
                    <rule implementation="org.jacoco.maven.RuleConfiguration">
                      <element>BUNDLE</element>
                      <limits>
                        <limit implementation="org.jacoco.report.check.Limit">
                          <counter>INSTRUCTION</counter>
                          <value>COVEREDRATIO</value>
                          <minimum>${exo.test.coverage.ratio}</minimum>
                        </limit>
                      </limits>
                    </rule>
                  </rules>
                  <dataFile>${sonar.jacoco.reportPaths}</dataFile>
                </configuration>
              </execution>
              <!-- Ensures that the code coverage report for unit tests is created after unit tests have been run. -->
              <execution>
                <id>post-unit-test</id>
                <phase>test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
                <configuration>
                  <!-- Sets the path to the file which contains the execution data. -->
                  <dataFile>${sonar.jacoco.reportPath}</dataFile>
                  <!-- Sets the output directory for the code coverage report. -->
                  <outputDirectory>${project.reporting.outputDirectory}/test-coverage-ut</outputDirectory>
                </configuration>
              </execution>
              <!-- Ensures that the code coverage report for integration tests after integration tests have been run. -->
              <execution>
                <id>post-integration-test</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
                <configuration>
                  <!-- Sets the path to the file which contains the execution data. -->
                  <dataFile>${sonar.jacoco.itReportPath}</dataFile>
                  <!-- Sets the output directory for the code coverage report. -->
                  <outputDirectory>${project.reporting.outputDirectory}/test-coverage-it</outputDirectory>
                </configuration>
              </execution>
              <execution>
                <id>merge-all-test-reports</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>merge</goal>
                </goals>
                <configuration>
                  <fileSets>
                    <fileSet>
                      <directory>${jacoco.outputDir}</directory>
                      <includes>
                        <include>*.exec</include>
                      </includes>
                    </fileSet>
                  </fileSets>
                  <destFile>${sonar.jacoco.reportPaths}</destFile>
                </configuration>
              </execution>
              <execution>
                <id>create-merged-tests-coverage-report</id>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
                <configuration>
                  <dataFile>${sonar.jacoco.reportPaths}</dataFile>
                  <outputDirectory>${project.reporting.outputDirectory}/test-coverage-all</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.sonar-plugins.java</groupId>
          <artifactId>sonar-jacoco-listeners</artifactId>
          <version>${sonar-jacoco-listeners.version}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${version.jacoco.plugin}</version>
            <reportSets>
              <reportSet>
                <id>default-report</id>
                <reports>
                  <report>report</report>
                </reports>
                <configuration>
                  <dataFile>${sonar.jacoco.reportPath}</dataFile>
                </configuration>
              </reportSet>
              <reportSet>
                <id>default-report-integration</id>
                <reports>
                  <report>report-integration</report>
                </reports>
                <configuration>
                  <dataFile>${sonar.jacoco.itReportPath}</dataFile>
                </configuration>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <!--
     Reformat POMs
     -->
    <profile>
      <id>format-pom</id>
      <build>
        <defaultGoal>sortpom:sort</defaultGoal>
        <plugins>
          <plugin>
            <groupId>com.google.code.sortpom</groupId>
            <artifactId>maven-sortpom-plugin</artifactId>
            <configuration>
              <createBackupFile>false</createBackupFile>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
     Sort Dependencies - Maven reads dependencies according to the order in the pom-file when compiling. Rearranging the order may affect the compilation output.
     -->
    <profile>
      <id>sort-deps</id>
      <build>
        <defaultGoal>sortpom:sort</defaultGoal>
        <plugins>
          <plugin>
            <groupId>com.google.code.sortpom</groupId>
            <artifactId>maven-sortpom-plugin</artifactId>
            <configuration>
              <createBackupFile>false</createBackupFile>
              <sortDependencies>scope,groupId,artifactId</sortDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
     Sort DependencyManagement - Maven reads dependencies according to the order in the pom-file when compiling. Rearranging the order may affect the compilation output.
     To use only in a POM with depMgt entries
     -->
    <profile>
      <id>sort-depsMgt</id>
      <build>
        <defaultGoal>sortpom:sort</defaultGoal>
        <plugins>
          <plugin>
            <groupId>com.google.code.sortpom</groupId>
            <artifactId>maven-sortpom-plugin</artifactId>
            <configuration>
              <createBackupFile>false</createBackupFile>
              <sortDependencies>groupId,artifactId</sortDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
     Controls dependencies
    -->
    <profile>
      <id>verify-deps</id>
      <build>
        <defaultGoal>dependency:analyze dependency:analyze-dep-mgt dependency:analyze-duplicate</defaultGoal>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <configuration>
              <outputXML>true</outputXML>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>maven-site-descriptor</id>
      <activation>
        <file>
          <!--  This employs that the basedir expression is only recognized by Maven 3.x (see MNG-2363) -->
          <exists>${basedir}</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <!-- if releasing current pom with Maven 3, site descriptor must be attached -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-descriptor</id>
                <goals>
                  <goal>attach-descriptor</goal>
                </goals>
              </execution>
            </executions>
            <inherited>false</inherited>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>fix-headers</id>
      <build>
        <defaultGoal>validate</defaultGoal>
        <plugins>
          <!-- Creating current year element -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>compute-year</id>
                <goals>
                  <goal>timestamp-property</goal>
                </goals>
                <configuration>
                  <locale>en,US</locale>
                  <name>currentYear</name>
                  <pattern>yyyy</pattern>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Adding header to file -->
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>format-headers</id>
                <phase>validate</phase>
                <goals>
                  <goal>format</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>check-headers</id>
      <build>
        <defaultGoal>validate</defaultGoal>
        <plugins>
          <!-- Creating current year element -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>compute-year</id>
                <goals>
                  <goal>timestamp-property</goal>
                </goals>
                <configuration>
                  <locale>en,US</locale>
                  <name>currentYear</name>
                  <pattern>yyyy</pattern>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Adding header to file -->
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>check-headers</id>
                <phase>validate</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>project-repositories</id>
      <activation>
        <property>
          <name>!skip-project-repositories</name>
        </property>
      </activation>
      <repositories>
        <repository>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <id>repository.exoplatform.org</id>
          <url>https://repository.exoplatform.org/public</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <id>repository.exoplatform.org</id>
          <url>https://repository.exoplatform.org/public</url>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    <profile>
      <activation>
        <property>
          <name>packaging</name>
          <value>jar</value>
        </property>
        <file>
          <missing>src/main/resources/no-aop</missing>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjtools</artifactId>
          <version>${org.aspectj.version}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjrt</artifactId>
          <version>${org.aspectj.version}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>${org.aspectj.version}</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjtools</artifactId>
                <version>${org.aspectj.version}</version>
              </dependency>
              <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${org.aspectj.version}</version>
              </dependency>
              <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${org.aspectj.version}</version>
              </dependency>
            </dependencies>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>test-jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
