<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <!-- Include Sakai OSS parent, includes information for release management and project information common to all projects --> 
  <parent>
      <groupId>org.sakaiproject</groupId>
      <artifactId>oss-parent</artifactId>
      <version>1</version>
      <relativePath></relativePath>
  </parent>

  <!-- Sakai Master defines all property versions and dependencyManagement used in Sakai -->

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sakaiproject</groupId>
  <artifactId>master</artifactId>
  <packaging>pom</packaging>
  <name>Sakai Master</name>
  <description>Corporate POM for the Sakai Open Source Collaborative Learning Environment/Learning Management System</description>
  <version>20.5</version>

  <properties>
    <sakai.version>20.5</sakai.version>
    <!-- Standard dependency versions -->
    <sakai.commons.lang.version>2.6</sakai.commons.lang.version>
    <sakai.commons.lang3.version>3.9</sakai.commons.lang3.version>
    <sakai.commons.fileupload.version>1.4</sakai.commons.fileupload.version>
    <sakai.commons-math3.version>3.6.1</sakai.commons-math3.version>
    <sakai.commons-text.version>1.8</sakai.commons-text.version>
    <sakai.commons-validator.version>1.6</sakai.commons-validator.version>
    <sakai.commons-logging.version>1.2</sakai.commons-logging.version>
    <sakai.commons.configuration.version>1.6</sakai.commons.configuration.version>
    <sakai.ehcache.groupId>net.sf.ehcache</sakai.ehcache.groupId>
    <sakai.ehcache.artifactId>ehcache-core</sakai.ehcache.artifactId>
    <sakai.ehcache.version>2.6.11</sakai.ehcache.version>
    <sakai.elasticsearch.version>1.7.6</sakai.elasticsearch.version>
    <sakai.hibernate.groupId>org.hibernate</sakai.hibernate.groupId>
    <sakai.hibernate.artifactId>hibernate-core</sakai.hibernate.artifactId>
    <sakai.hibernate.version>4.3.11.Final</sakai.hibernate.version>
    <sakai.hikaricp.version>3.4.2</sakai.hikaricp.version>
    <sakai.httpclient.version>4.5.11</sakai.httpclient.version>
    <sakai.httpcore.version>4.4.13</sakai.httpcore.version>
    <sakai.httpmime.version>4.5.11</sakai.httpmime.version>
    <sakai.jackson.version>2.10.1</sakai.jackson.version>
    <sakai.jsoup.version>1.12.1</sakai.jsoup.version>
    <sakai.woodstox.version>5.2.1</sakai.woodstox.version>
    <sakai.stax2.version>4.2</sakai.stax2.version>
    <sakai.java.jwt.version>3.1.0</sakai.java.jwt.version>
    <sakai.jstl.version>1.2</sakai.jstl.version>
    <sakai.lombok.version>1.18.10</sakai.lombok.version>
    <sakai.lucene.version>4.10.4</sakai.lucene.version>
    <sakai.org.json.version>20190722</sakai.org.json.version>
    <sakai.pluto.version>1.1.7</sakai.pluto.version>
    <sakai.quartz.version>2.3.2</sakai.quartz.version>
    <sakai.opencsv.version>5.0</sakai.opencsv.version>
    <sakai.servletapi.version>2.4</sakai.servletapi.version>
    <sakai.groovy.version>2.4.17</sakai.groovy.version>
    <sakai.simple-xml.version>2.7.1</sakai.simple-xml.version>
    <sakai.spring.groupId>org.springframework</sakai.spring.groupId>
    <sakai.spring.artifactId>spring-core</sakai.spring.artifactId>
    <sakai.spring.version>4.3.29.RELEASE</sakai.spring.version>
    <sakai.spring.data.commons.version>1.13.23.RELEASE</sakai.spring.data.commons.version>
    <sakai.spring.data.jpa.version>1.11.23.RELEASE</sakai.spring.data.jpa.version>
    <sakai.spring.data.rest.version>2.6.23.RELEASE</sakai.spring.data.rest.version>
    <sakai.spring.security.version>4.2.13.RELEASE</sakai.spring.security.version>
    <sakai.spring.hateoas.version>0.25.2.RELEASE</sakai.spring.hateoas.version>
    <sakai.spring.plugin.version>1.2.0.RELEASE</sakai.spring.plugin.version>
    <sakai.spring.test.artifactId>spring-test</sakai.spring.test.artifactId>
    <sakai.spring.test.version>4.3.29.RELEASE</sakai.spring.test.version>
    <sakai.tika.version>1.23</sakai.tika.version>
    <sakai.tomcat.version>9.0.33</sakai.tomcat.version>
    <sakai.velocity.version>1.6.4</sakai.velocity.version>
    <sakai.xerces.impl.version>2.12.0</sakai.xerces.impl.version>
    <sakai.xerces.api.version>2.6.2</sakai.xerces.api.version>
    <sakai.log4j.version>1.2.17</sakai.log4j.version>
    <sakai.slf4j.version>1.7.30</sakai.slf4j.version>
    <sakai.poi.version>4.1.1</sakai.poi.version>
    <sakai.mockito.version>2.28.2</sakai.mockito.version>
    <sakai.powermock.version>2.0.2</sakai.powermock.version>
    <sakai.okiosid.version>2.0</sakai.okiosid.version>
    <joda.time.version>2.10.5</joda.time.version>
    <sakai.weld.shaded.version>3.1.3.Final</sakai.weld.shaded.version>
    <jayway.jsonpath.version>2.4.0</jayway.jsonpath.version>
    <sakai.genericdao.version>0.11.0</sakai.genericdao.version>
    <reflectutils.version>0.9.20</reflectutils.version>
    <json.simple.version>1.1.1</json.simple.version>
    <handlebars1.version>1.3.2</handlebars1.version>
    <handlebars2.version>2.1.0</handlebars2.version>
    <handlebars4.version>4.0.6</handlebars4.version>
    <hamcrest.all.version>1.3</hamcrest.all.version>
    <junit.version>4.12</junit.version>

    <!-- Sakai modules that are versioned separately -->
    <!-- lessonbuilder tool pom depends on msgcntr ver prop. Need to add a profile to the LB tool pom to mark change between 10.x master and earlier versions -->
    <sakai.msgcntr.version>${sakai.version}</sakai.msgcntr.version> 
    <!-- Set the source encoding to avoid maven warnings -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sakai.jdk.version>1.8</sakai.jdk.version>
    <sakai.build.directory>target</sakai.build.directory>
    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <!-- Default empty unless profile activation -->
    <random-source></random-source>

    <!-- These should only be updated when the webjars version is updated -->
    <ckeditor.autosave.version>0.18.4</ckeditor.autosave.version>
    <ckeditor.wordcount.version>1.17.6</ckeditor.wordcount.version>
    <ckeditor.a11ychecker.version>1.1.1</ckeditor.a11ychecker.version>
    <ckeditor.balloonpanel.version>4.9.2</ckeditor.balloonpanel.version>
    <ckeditor.image2.version>4.14.0</ckeditor.image2.version>
    <ckeditor.html5video.version>1.2.1</ckeditor.html5video.version>

  </properties>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
  <profiles>
    <profile>
      <id>dependency-check-support</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
          <name>dependency-check-support</name>
        </property>
      </activation>
      <modules>
        <module>dependency-check-support</module>
      </modules>
      <build>
        <plugins>
          <plugin>
            <!-- Report is put in the target subdirectory. Can be run at the root of this as:
              mvn -Pdependency-check-support clean install -Dmaven.test.skip=true
              mvn -Pdependency-check-support org.owasp:dependency-check-maven:purge
              mvn -Pdependency-check-support org.owasp:dependency-check-maven:aggregate
            -->
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>5.1.1</version>
            <dependencies>
              <dependency>
                <groupId>org.sakaiproject</groupId>
                <artifactId>dependency-check-support</artifactId>
                <version>${sakai.version}</version>
              </dependency>
            </dependencies>
            <configuration>
              <suppressionFiles>
                <!-- This is loaded off the classpath and is provided through the dependency-check-support artifact -->
                <suppressionFile>sakai-suppression.xml</suppressionFile>
              </suppressionFiles>
              <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <!-- We don't define any goals by default -->
                  <!--<goal>check</goal>-->
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>sakai-release</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
            <name>sakai-release</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${sakai.jdk.version}</source>
                <target>${sakai.jdk.version}</target>
                <optimize>true</optimize>
                <debug>true</debug>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>deploy-skip</id>
      <activation>
        <file>
          <exists>${basedir}/src/webapp</exists>
        </file>
      </activation>
      <properties>
        <maven.deploy.skip>true</maven.deploy.skip>
        <skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
      </properties>
    </profile>
    <profile>
      <id>unix-profile</id>
      <activation>
        <os>
          <family>unix</family>
          <name>!mac os x</name>
        </os>
      </activation>
      <properties>
        <!-- The random source it to stop builds stalling on VMs with poor sources of random -->
        <random-source>-Djava.security.egd=file:/dev/./urandom</random-source>
      </properties>
    </profile>
    <profile>
        <id>snapshots</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <property>
                <name>snapshots</name>
            </property>
        </activation>
        <repositories>
            <repository>
                <id>sonatype-nexus-snapshots</id>
                <name>Sonatype Nexus Snapshots</name>
                <url>https://oss.sonatype.org/content/repositories/snapshots</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>
  </profiles>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>https://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
    <pluginRepository>
        <id>opencast</id>
        <name>Opencast Repo</name>
        <url>https://nexus.opencast.org/nexus/content/groups/public</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </pluginRepository>
  </pluginRepositories>
  <repositories>
   <repository>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <layout>default</layout>
      <url>https://repo1.maven.org/maven2</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>sakai-maven</id>
      <name>Sakai Maven Repo</name>
      <layout>default</layout>
      <url>https://source.sakaiproject.org/maven2</url>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </snapshots>
    </repository>
    <repository>
      <id>repository.spring.release</id>
      <name>Spring GA Repository</name>
      <url>https://repo.spring.io/release</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>sakai-maven2-snapshots</id>
      <name>Sakai Maven Repo</name>
      <layout>default</layout>
      <url>https://source.sakaiproject.org/maven2-snapshots</url>
      <releases>
        <enabled>false</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <checksumPolicy>ignore</checksumPolicy>
      </snapshots>
    </repository>
    <repository>
        <id>opencast</id>
        <name>Opencast Repo</name>
        <url>https://nexus.opencast.org/nexus/content/groups/public</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
  </repositories>

  <dependencyManagement>
    <dependencies>
      <!-- provided by the JDK, here to ensure its not packaged in child poms child poms may still override if necessary -->
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>2.7.2</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>${sakai.xerces.impl.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- common/lib -->
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>8.0</version>
        <scope>provided</scope>
      </dependency>
      <!-- parser API inconsistancies -->
      <!-- force this version where used -->
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xmlParserAPIs</artifactId>
        <version>${sakai.xerces.api.version}</version>
      </dependency>
      <!-- block these versions if the user really wants them they will have to be specific -->
      <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xmlParserAPIs</artifactId>
        <version>2.0.2</version>
        <scope>provided</scope>
      </dependency>
      <!-- shared/lib -->
      <!-- 3rd party APIs/Implementations -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${sakai.spring.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>${sakai.spring.data.jpa.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>${sakai.spring.data.commons.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.hateoas</groupId>
        <artifactId>spring-hateoas</artifactId>
        <version>${sakai.spring.hateoas.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.plugin</groupId>
        <artifactId>spring-plugin-core</artifactId>
        <version>${sakai.spring.plugin.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${sakai.spring.security.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-core</artifactId>
        <version>${sakai.spring.data.rest.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.atteo</groupId>
        <artifactId>evo-inflector</artifactId>
        <version>1.2.2</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>${jayway.jsonpath.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>net.minidev</groupId>
        <artifactId>json-smart</artifactId>
        <version>2.3</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>${json.simple.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>net.minidev</groupId>
        <artifactId>asm</artifactId>
        <scope>provided</scope>
        <version>1.0.2</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>classmate</artifactId>
        <version>1.5.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-parameter-names</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jdk8</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-modules-java8</artifactId>
        <version>${sakai.jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>${sakai.jackson.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.woodstox</groupId>
        <artifactId>woodstox-core</artifactId>
        <version>${sakai.woodstox.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.codehaus.woodstox</groupId>
        <artifactId>stax2-api</artifactId>
        <version>${sakai.stax2.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>${sakai.jsoup.version}</version>
      </dependency>
      <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>javax.activation-api</artifactId>
        <version>1.2.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>2.7.7</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>3.2.12</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>2.5</version>
      </dependency>
      <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat-jdbc</artifactId>
          <scope>provided</scope>
          <version>${sakai.tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${sakai.commons.fileupload.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${sakai.commons.lang.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>1.6</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.14</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</version>
      </dependency>
      <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>2.1</version>
      </dependency>
      <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>${sakai.commons-validator.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${sakai.commons.lang3.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>${sakai.commons-text.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>${sakai.commons-math3.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.z3950.zing</groupId>
        <artifactId>cql-java</artifactId>
        <version>1.12</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>2.1.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-core</artifactId>
        <version>${sakai.ehcache.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- needed by Ehcache (and jackrabbit) -->
      <!-- Logging Dependencies Start -->
      <dependency>
        <!-- slf4j-api is required by any project that needs logging -->
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${sakai.slf4j.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- slf4j-log4j12 binds slf4j to log4j impl, this can be changed to another logging impl-->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${sakai.slf4j.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- log4j is the actual logger used by slf4j, this would be removed if using a different logging impl -->
      <!-- change to scope runtime once all sakai log4j code is switched to slf4j -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${sakai.log4j.version}</version>
        <scope>provided</scope>
        <exclusions>
          <exclusion>
            <groupId>javax.jms</groupId>
            <artifactId>jms</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jdmk</groupId>
            <artifactId>jmxtools</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jmx</groupId>
            <artifactId>jmxri</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- jcl-over-slf4j is providing the redirection from jcl to slf4j -->
      <!-- change to scope runtime once all sakai jcl code is switched to slf4j -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${sakai.slf4j.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- JCL (commons-logging) is declared here as provided, it is important to
           know that this jar is never deployed. The contrary would be to remove this
           declaration and find every transitive dependency and exclude jcl.
           It also provides protection if someone included a new dependency that
           required jcl of which there are a lot. -->
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>[1.0,1.2]</version>
        <scope>provided</scope>
      </dependency>
      <!-- Logging Dependencies End -->
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${sakai.hibernate.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${sakai.hibernate.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.3.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${sakai.httpcore.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${sakai.httpclient.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>${sakai.httpmime.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.0.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging-annotations</artifactId>
        <version>2.2.0.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss</groupId>
        <artifactId>jandex</artifactId>
        <version>2.1.1.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.5.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.2.Final</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>${sakai.hibernate.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.25.0-GA</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.5.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.mnode.ical4j</groupId>
        <artifactId>ical4j</artifactId>
        <version>3.0.7</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>backport-util-concurrent</groupId>
         <artifactId>backport-util-concurrent</artifactId>
         <version>3.1</version>
         <scope>provided</scope>
      </dependency> 
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.2.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.sql</groupId>
        <artifactId>jdbc-stdext</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom2</artifactId>
        <version>2.0.6</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${sakai.jstl.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.transaction</groupId>
        <artifactId>jta</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>jakarta.mail</artifactId>
        <version>1.6.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.5.0-b01</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
        <scope>provided</scope>
      </dependency>
      <!-- KERNEL -->
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-component-manager</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-kernel-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel.component.api</groupId>
        <artifactId>sakai-component-manager</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-kernel-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-kernel-storage-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-kernel-private</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.kernel</groupId>
        <artifactId>sakai-kernel-component</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>

      <!-- Tika includes asm-debug-all which it really shouldn't
           since it is used in multiple places it is declared here so its done right -->
      <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-parsers</artifactId>
        <version>${sakai.tika.version}</version>
        <exclusions>
          <exclusion>
            <groupId>de.l3s.boilerpipe</groupId>
            <artifactId>boilerpipe</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-debug-all</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>${sakai.tika.version}</version>
      </dependency>

      <!-- provided by the JDK, here to ensure its not packaged in child poms child poms may still override if necessary -->
      <!-- common/lib -->
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-dav-common</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- shared/lib -->
      <dependency>
        <groupId>org.codehaus.castor</groupId>
        <artifactId>castor</artifactId>
        <version>1.1.2.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.portlet</groupId>
        <artifactId>portlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>OKI</groupId>
        <artifactId>OkiOSID</artifactId>
        <version>${sakai.okiosid.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.pluto</groupId>
        <artifactId>pluto-container</artifactId>
        <version>${sakai.pluto.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.pluto</groupId>
        <artifactId>pluto-descriptor-api</artifactId>
        <version>${sakai.pluto.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.pluto</groupId>
        <artifactId>pluto-descriptor-impl</artifactId>
        <version>${sakai.pluto.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.pluto</groupId>
        <artifactId>pluto-taglib</artifactId>
        <version>${sakai.pluto.version}</version>
        <scope>provided</scope>
      </dependency>    
      <!-- Job Scheduler deploys quartz to shared. -->
      <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>${sakai.quartz.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>${sakai.opencsv.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- Added to shared by the kernel (duplicate definition in kernel/pom.xml) -->
      <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.199</version>
        <scope>provided</scope>
      </dependency>
      <!-- Elasticsearch -->
      <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>${sakai.elasticsearch.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.lucene</groupId>
          <artifactId>lucene-core</artifactId>
          <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.lucene</groupId>
          <artifactId>lucene-analyzers-common</artifactId>
          <version>${sakai.lucene.version}</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-codecs</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>      
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-grouping</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>      
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queries</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>jakarta-regexp</groupId>
                <artifactId>jakarta-regexp</artifactId>
            </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-memory</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-misc</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-highlighter</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>jakarta-regexp</groupId>
                <artifactId>jakarta-regexp</artifactId>
            </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-sandbox</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-suggest</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-spatial</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-join</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-expressions</artifactId>
        <version>${sakai.lucene.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>${sakai.groovy.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>1.24</version>
        <scope>provided</scope>
      </dependency>
      <!-- Sakai apis -->
      <dependency>
        <groupId>org.sakaiproject.accountvalidator</groupId>
        <artifactId>accountvalidator-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>archive-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <!-- TODO - remove this from DM - nothing should use the import-impl -->
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>import-impl</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>sakai-import-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-comp-shared-help</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-db-ext</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.genericdao</groupId>
        <artifactId>generic-dao</artifactId>
        <version>${sakai.genericdao.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.courier</groupId>
        <artifactId>sakai-courier-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.courier</groupId>
        <artifactId>sakai-courier-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-help-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-help-content</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.portal</groupId>
        <artifactId>sakai-portal-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.portal</groupId>
        <artifactId>sakai-portal-render-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.portal</groupId>
        <artifactId>sakai-portal-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.edu-services.sections</groupId>
        <artifactId>sections-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.edu-services.sections</groupId>
        <artifactId>sections-model</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-web-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-common-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-glossary-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-integration-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-matrix-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-portal-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-presentation-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.osp</groupId>
        <artifactId>osp-wizard-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.announcement</groupId>
        <artifactId>sakai-announcement-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.assignment</groupId>
        <artifactId>sakai-assignment-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.commons</groupId>
        <artifactId>commons-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.search.elasticsearch</groupId>
        <artifactId>elasticsearch-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.lessonbuilder</groupId>
        <artifactId>lessonbuilder-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.basiclti</groupId>
        <artifactId>basiclti-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.taggable</groupId>
        <artifactId>sakai-taggable-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.calendar</groupId>
        <artifactId>sakai-calendar-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.calendaring</groupId>
        <artifactId>external-calendaring-service-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-citations-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>sakai-common-composite-component-data</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>sakai-common-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.contentreview</groupId>
        <artifactId>content-review-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.delegatedaccess</groupId>
        <artifactId>delegatedaccess-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency> 
      <dependency>
        <groupId>org.sakaiproject.edu-services.course-management</groupId>
        <artifactId>coursemanagement-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-discussion-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.emailtemplateservice</groupId>
        <artifactId>emailtemplateservice-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.entitybroker</groupId>
        <artifactId>entitybroker-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.entitybroker</groupId>
        <artifactId>entitybroker-utils</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-fck-connector</artifactId>
        <version>${sakai.version}</version>
        <type>war</type>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.edu-services.gradebook</groupId>
        <artifactId>gradebook-service-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.edu-services.gradebook</groupId>
        <artifactId>gradebook-service-hibernate</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.hierarchy</groupId>
        <artifactId>hierarchy-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency> 
      <dependency>
        <groupId>org.sakaiproject.mailarchive</groupId>
        <artifactId>sakai-mailarchive-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.message</groupId>
        <artifactId>sakai-message-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.sakaiproject.message</groupId>
          <artifactId>sakai-message-util</artifactId>
          <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.message</groupId>
        <artifactId>sakai-message-impl</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.msgcntr</groupId>
        <artifactId>messageforums-api</artifactId>
        <version>${sakai.msgcntr.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.msgcntr</groupId>
        <artifactId>messageforums-hbm</artifactId>
        <version>${sakai.msgcntr.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.metaobj</groupId>
        <artifactId>sakai-metaobj-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-news-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-onedrive-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-podcasts-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.polls</groupId>
        <artifactId>polls-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-postem-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.presence</groupId>
        <artifactId>sakai-presence-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.presence</groupId>
        <artifactId>sakai-presence-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.common</groupId>
        <artifactId>sakai-privacy-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.profile2</groupId>
        <artifactId>profile2-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-rwiki-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.samigo</groupId>
        <artifactId>samigo-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.rubrics</groupId>
        <artifactId>rubrics-service-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.samigo</groupId>
        <artifactId>samigo-services</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.samigo</groupId>
        <artifactId>samigo-hibernate</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.samigo</groupId>
        <artifactId>samigo-qti</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.scheduler</groupId>
        <artifactId>scheduler-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.scheduler</groupId>
        <artifactId>scheduler-component-shared</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.search</groupId>
        <artifactId>search-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.search</groupId>
        <artifactId>search-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.signup</groupId>
        <artifactId>signup-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.site</groupId>
        <artifactId>sakai-mergedlist-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.sitemanage</groupId>
        <artifactId>sakai-site-manage-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.sitestats</groupId>
        <artifactId>sitestats-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.shortenedurl</groupId>
        <artifactId>shortenedurl-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-syllabus-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.userauditservice</groupId>
        <artifactId>userauditservice-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.userauditservice</groupId>
        <artifactId>userauditservice-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-usermembership-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.warehouse</groupId>
        <artifactId>sakai-warehouse-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject</groupId>
        <artifactId>sakai-contentreview-service-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.pasystem</groupId>
        <artifactId>pasystem-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.tags</groupId>
        <artifactId>tags-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- UI dependencies; our glue packages, not the raw libraries, -->
      <!-- and only where we have duplication in dependencyManagement sections. -->
      <dependency>
        <groupId>org.sakaiproject.velocity</groupId>
        <artifactId>sakai-velocity-tool</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.velocity</groupId>
        <artifactId>sakai-velocity-tool-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.velocity</groupId>
        <artifactId>sakai-velocity-util</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.oauth</groupId>
        <artifactId>oauth-api</artifactId>
        <version>${sakai.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-app</artifactId>
        <version>${sakai.version}</version>
        <!-- type>pom</type -->
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-spreadsheet</artifactId>
        <version>${sakai.version}</version>
        <!-- type>pom</type -->
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-tool</artifactId>
        <version>${sakai.version}</version>
        <!-- type>pom</type -->
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-tool-sun</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-widgets-sun</artifactId>
        <version>${sakai.version}</version>
        <!-- type>pom</type -->
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>jsf-widgets-sun-depend</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>myfaces-tool</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
        <exclusions>
          <!-- exclude this to avoid the collision btw RI and tomahawk -->
          <exclusion>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf</groupId>
        <artifactId>myfaces-widgets-depend</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <!--JSF 2 Dependencies-->
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-app</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-tool</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-tool-sun</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-widgets</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-widgets-sun</artifactId>
        <version>${sakai.version}</version>
      </dependency>
      <dependency>
        <groupId>org.sakaiproject.jsf2</groupId>
        <artifactId>jsf2-widgets-sun-depend</artifactId>
        <version>${sakai.version}</version>
        <type>pom</type>
      </dependency>
      <!-- JUNIT -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${sakai.mockito.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.powermock</groupId>
          <artifactId>powermock-module-junit4</artifactId>
          <version>${sakai.powermock.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.powermock</groupId>
          <artifactId>powermock-api-mockito2</artifactId>
          <version>${sakai.powermock.version}</version>
          <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${sakai.lombok.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.47</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.mariadb.jdbc</groupId>
          <artifactId>mariadb-java-client</artifactId>
          <version>2.5.3</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>${sakai.hikaricp.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.simpleframework</groupId>
        <artifactId>simple-xml</artifactId>
        <version>${sakai.simple-xml.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId>
        <version>3.12.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast-client</artifactId>
        <version>3.12.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.terracotta</groupId>
        <artifactId>terracotta-toolkit-1.6-runtime</artifactId>
        <version>5.9.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache-terracotta</artifactId>
        <version>${sakai.ehcache.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jvnet.opendmk</groupId>
        <artifactId>jmxremote_optional</artifactId>
        <version>1.0_01-ea</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.xmlgraphics</groupId>
        <artifactId>xmlgraphics-commons</artifactId>
        <version>1.5</version>
      </dependency>
      <dependency>
        <groupId>org.mariuszgromada.math</groupId>
        <artifactId>MathParser.org-mXparser</artifactId>
        <version>4.4.2</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <!-- Global Dependencies -->
  <!-- should never need to override these in your project -->
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

  <build>
    <directory>${sakai.build.directory}</directory>
    <outputDirectory>${sakai.build.directory}/classes</outputDirectory>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <testOutputDirectory>${sakai.build.directory}/test-classes</testOutputDirectory>
    <sourceDirectory>src/java</sourceDirectory>
    <scriptSourceDirectory>src/webapp</scriptSourceDirectory>
    <testSourceDirectory>src/test</testSourceDirectory>
    <testResources>
      <testResource>
        <directory>${basedir}/src/test/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
        <includes>
          <include>**/*</include>
        </includes>
      </testResource>
      <testResource>
        <directory>${basedir}/src/test/resources</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </testResource>
    </testResources>
    <resources>
      <resource>
        <directory>${basedir}/src/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>${basedir}/src/bundle</directory>
        <includes>
          <include>**/*</include>
        </includes>
      </resource>
    </resources>

    <pluginManagement>

      <plugins>
        <!-- SAKAI maven plugin -->
        <plugin>
          <groupId>org.sakaiproject.maven.plugins</groupId>
          <artifactId>sakai</artifactId>
          <version>1.4.5</version>
        </plugin>
        <!-- OTHER maven plugins -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.7</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <links>
              <link>http://docs.oracle.com/javase/8/docs/api/</link>
              <link>http://docs.oracle.com/javaee/5/api/</link>
              <link>http://junit.sourceforge.net/javadoc/</link>
              <link>http://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
              <link>http://commons.apache.org/proper/commons-collections/apidocs/</link>
              <link>https://commons.apache.org/proper/commons-io/javadocs/api-release/</link>
              <link>https://commons.apache.org/proper/commons-text/javadocs/api-release/</link>
              <link>https://commons.apache.org/proper/commons-validator/apidocs</link>
            </links>
            <breakiterator>true</breakiterator>
            <minmemory>256m</minmemory>
            <maxmemory>2048m</maxmemory>
            <doclint>none</doclint>
            <failOnError>false</failOnError>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-remote-resources-plugin</artifactId>
          <version>1.6.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.8.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>3.12.0</version>
          <configuration>
            <xrefLocation>${project.reporting.outputDirectory}/../xref</xrefLocation>
            <sourceEncoding>utf-8</sourceEncoding>
            <minimumTokens>20</minimumTokens>
            <targetJdk>${sakai.jdk.version}</targetJdk>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>taglist-maven-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <tagListOptions>
              <tagClasses>
                <tagClass>
                  <displayName>TODO</displayName>
                  <tags>
                    <tag>
                      <matchString>todo</matchString>
                      <matchType>ignoreCase</matchType>
                    </tag>
                    <tag>
                      <matchString>FIXME</matchString>
                      <matchType>exact</matchType>
                    </tag>
                  </tags>
                </tagClass>
                <tagClass>
                  <displayName>Deprecated</displayName>
                  <tags>
                    <tag>
                      <matchString>@deprecated</matchString>
                      <matchType>exact</matchType>
                    </tag>
                  </tags>
                </tagClass>
              </tagClasses>
            </tagListOptions>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>3.1.12.2</version>
         <configuration>
            <spotbugsXmlOutput>true</spotbugsXmlOutput>
            <xmlOutput>true</xmlOutput>
            <effort>Max</effort>
          </configuration>
         <dependencies>
         <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
            <dependency>
              <groupId>com.github.spotbugs</groupId>
              <artifactId>spotbugs</artifactId>
               <version>3.1.12</version>
             </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
            <aggregate>true</aggregate>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.0</version>
          <configuration>
            <configLocation>google_checks.xml</configLocation>
            <linkXRef>false</linkXRef>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>jdepend-maven-plugin</artifactId>
          <version>2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
        </plugin>
        <plugin>
          <groupId>net.sourceforge.maven-taglib</groupId>
          <artifactId>maven-taglib-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <taglib.src.dir>src</taglib.src.dir>
            <!-- <taglib.src.dir>src/webapp/WEB-INF</taglib.src.dir> -->
          </configuration>
        </plugin>
        <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <header>https://raw.githubusercontent.com/sakaiproject/sakai/master/ECLv2-header-template.txt</header>
                <includes>
                    <include>**/org/sakaiproject/**/*.java</include>
                </includes>
                <excludes>
                    <exclude>target/**</exclude>
                    <exclude>**/org/sakaiproject/rsf/**</exclude>
                    <!-- Columbia header -->
                    <exclude>**/delegatedaccess/**</exclude>
                    <exclude>**/jsf/**</exclude>
                </excludes>
                <properties>
                    <holder>The Apereo Foundation</holder>
                </properties>
                <encoding>UTF-8</encoding>
                <skipExistingHeaders>true</skipExistingHeaders>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin-git</artifactId>
                    <!-- make sure you use the same version as license-maven-plugin -->
                    <version>3.0</version>
                </dependency>
            </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <inherited>true</inherited>
        <groupId>org.sakaiproject.maven.plugins</groupId>
        <artifactId>sakai</artifactId>
        <extensions>true</extensions>
        <configuration>
          <deployDirectory>${maven.tomcat.home}</deployDirectory>
          <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
          <!-- We don't have to do this, but expanding all the files inside a sakai-component on a deploy is slow
               so having a JAR of the local files speeds things up. -->
          <archiveClasses>true</archiveClasses>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.1.1</version>
                </requireMavenVersion>
                <requireJavaVersion>
                  <version>${sakai.jdk.version}</version>
                </requireJavaVersion>
              </rules>
            </configuration>
          </execution>
          <execution>
              <id>enforce-ban-circular-dependencies</id>
              <goals>
                  <goal>enforce</goal>
              </goals>
              <!-- Against a clean repository you can't run `mvn validate` with enforcer enabled -->
              <phase>install</phase>
              <configuration>
                  <rules>
                      <banCircularDependencies/>
                  </rules>
                  <fail>true</fail>
              </configuration>
          </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>extra-enforcer-rules</artifactId>
                <version>1.0-beta-4</version>
            </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <inherited>true</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <!-- <compilerArguments> <verbose /> </compilerArguments> -->
          <source>${sakai.jdk.version}</source>
          <target>${sakai.jdk.version}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <!--TODO Change this to use the default value -->
          <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <!-- disable lombok during tests -->
            <lombok.disable>true</lombok.disable>
            <!-- Pass through important service-integration test properties. -->
            <maven.tomcat.home>${maven.tomcat.home}</maven.tomcat.home>
            <!--suppress MavenModelInspection -->
            <test.sakai.home>${test.sakai.home}</test.sakai.home>
          </systemPropertyVariables>
          <!-- This is to stop it stealing focus on developer machines (OSX) -->
          <!-- file.encoding is for windows which was failing tests under maven without this -->
          <!-- The random source it to stop builds stalling on VMs with poor sources of random -->
          <argLine>-Djava.awt.headless=true -Dfile.encoding=${project.build.sourceEncoding} ${random-source}</argLine>
        </configuration>
      </plugin>
      <plugin>
        <inherited>true</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
      </plugin>
      <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>
     </plugin>
    </plugins>

    <extensions>
      <!-- Enable the use of external ssh for deploys -->
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh-external</artifactId>
        <version>3.3.4</version>
      </extension>
    </extensions>

  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>
      <plugin>
        <!-- to do and deprecated tags report -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>taglist-maven-plugin</artifactId>
      </plugin>
      <!-- taglib plugin used to generate taglib jars during release -->
      <plugin>
        <groupId>net.sourceforge.maven-taglib</groupId>
        <artifactId>maven-taglib-plugin</artifactId>
      </plugin>
      <!-- javadoc plugin requires more than 1GB to run - disabling by default -->
      <!-- Disabled since it fails on OSX -https://jira.codehaus.org/browse/MCOBERTURA-180
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
      </plugin>-->
      <!-- Code analysis report - fails to find the rulesets
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <rulesets>
            <ruleset>/rulesets/basic.xml</ruleset>
            <ruleset>/rulesets/codesize.xml</ruleset>
            <ruleset>/rulesets/design.xml</ruleset>
            <ruleset>/rulesets/finalizers.xml</ruleset>
            <ruleset>/rulesets/imports.xml</ruleset>
            <ruleset>/rulesets/logging-java.xml</ruleset>
            <ruleset>/rulesets/migrating.xml</ruleset>
            <ruleset>/rulesets/strings.xml</ruleset>
            <ruleset>/rulesets/unusedcode.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>
      -->
      <!-- jxr source code cross linking - maven-jxr-plugin - extremely slow to run, removed from default -->
      <!-- Changelog report - changelog-maven-plugin causes build fail -->
    </plugins>
  </reporting>

</project>
