Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
pom.xml 89.52 KiB
<?xml version="1.0"?>
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.openolat</groupId>
	<artifactId>openolat-lms</artifactId>
	<version>15.5-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>OpenOLAT LMS</name>
	<url>https://www.openolat.com</url>
	<description>
  Welcome to the OpenOLAT (Open Online Learning And Training) Developer Project Site. This site
  contains materials chiefly of concern to developers (e.g., unit testing and SCA output etc.)
  and is rebuilt periodically on a regular basis. The site structure is divided between
  project information (e.g., infrastructure, mailing lists, repositories etc.) and reports
  (e.g., unit testing, SCAs etc.)
  </description>
	<organization>
		<name>OpenOLAT</name>
		<url>https://www.openolat.com</url>
	</organization>
	<licenses>
		<license>
			<name>Apache 2.0 Open Source License</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0</url>
			<distribution>manual</distribution>
			<comments>OpenOLAT is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.</comments>
		</license>
	</licenses>
	<distributionManagement>
		<repository>
			<id>nexus.openolat</id>
			<name>OpenOLAT Internal Nexus Release Repository</name>
			<url>https://nexus.openolat.org/nexus/content/repositories/openolat</url>
		</repository>
		<snapshotRepository>
			<id>nexus.openolat</id>
			<name>OpenOLAT Internal Nexus Snapshot Repository</name>
			<url>https://nexus.openolat.org/nexus/content/repositories/openolat-snapshots</url>
		</snapshotRepository>
	</distributionManagement>
	<issueManagement>
		<system>JIRA</system>
		<url>https://jira.openolat.org</url>
	</issueManagement>
	<scm>
		<url>https://github.com/OpenOLAT/OpenOLAT</url>
		<connection>scm:git:git://github.com/OpenOLAT/OpenOLAT.git</connection>
		<developerConnection>scm:git:git@github.com:OpenOLAT/OpenOLAT.git</developerConnection>
	</scm>
	<mailingLists>
		<mailingList>
			<name>openolat</name>
			<subscribe>https://groups.google.com/forum/#!forum/openolat</subscribe>
			<post>openolat@googlegroups.com</post>
			<archive>https://groups.google.com/forum/#!forum/openolat</archive>
		</mailingList>
	</mailingLists>
	<!-- Unless otherwise explicitly stated the character encoding for all resources 
		(e.g., source, test etc.) will be UTF-8. This can be overriden at the plugin 
		level if necessary. -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<targetJdk>11</targetJdk>
		<org.springframework.version>5.3.7</org.springframework.version>
		<org.hibernate.version>5.4.31.Final</org.hibernate.version>
		<apache.cxf>3.4.3</apache.cxf>
		<apache.pdfbox>2.0.24</apache.pdfbox>
		<apache.poi>5.0.0</apache.poi>
		<apache.log4j>2.14.1</apache.log4j>
		<org.slf4j>1.7.30</org.slf4j>
		<io.jsonwebtoken>0.11.2</io.jsonwebtoken>
		<io.undertow>2.2.7.Final</io.undertow>
		<jackson.version>2.12.3</jackson.version>
		<org.mysql.version>8.0.25</org.mysql.version>
		<org.postgresql.version>42.2.20</org.postgresql.version>
		<org.infinispan.version>12.1.3.Final</org.infinispan.version>
		<lucene.version>7.7.0</lucene.version>
		<version.selenium>3.141.59</version.selenium>
		<version.drone>2.5.2</version.drone>
		<activemq.version>5.16.2</activemq.version>
		<qtiworks.version>1.0.25</qtiworks.version>

	    <!-- properties for testing and Q&A -->
	    <!-- by default no tests are executed so far (April 2011). Use appropriate profiles and properties on the command line -->
	    <!-- properties to define the testing environment -->
	    <test.env>mysql</test.env>
	    <!-- olat.local.properties to distinguish multiple single and cluster olat instances on a single machine-->
	    <test.env.db.name>olattest</test.env.db.name>
	    <test.env.db.user>olat</test.env.db.user>
	    <test.env.db.pass>olat</test.env.db.pass>
	    <test.env.db.host.port>3306</test.env.db.host.port>
	    <test.env.db.postgresql.user>postgres</test.env.db.postgresql.user>
	    <test.env.db.postgresql.pass>postgres</test.env.db.postgresql.pass>
	    <test.env.db.postgresql.host.port>5432</test.env.db.postgresql.host.port>
	    <test.env.db.oracle.name>orcl</test.env.db.oracle.name>
	    <test.env.db.oracle.user>OLATTEST</test.env.db.oracle.user>
	    <test.env.db.oracle.pass>olat00002</test.env.db.oracle.pass>
	    <test.env.db.oracle.host>localhost</test.env.db.oracle.host>
	    <test.env.db.oracle.host.port>1521</test.env.db.oracle.host.port>
	    <test.env.msgraph.app.id></test.env.msgraph.app.id>
	    <test.env.msgraph.app.secret></test.env.msgraph.app.secret>
	    <test.env.msgraph.app.tenant></test.env.msgraph.app.tenant>
	    <test.env.msgraph.teams.producer></test.env.msgraph.teams.producer>
	    <test.env.instance.id>myolat</test.env.instance.id>
	    <test.env.webdriver.browser>chrome</test.env.webdriver.browser>
	    <test.env.webdriver.firefox.version>v0.29.0</test.env.webdriver.firefox.version>
	    <test.env.webdriver.chrome.version>88.0.4324.96</test.env.webdriver.chrome.version>
	    <test.env.webdriver.chrome.arguments></test.env.webdriver.chrome.arguments>
	    <skipTests>true</skipTests>
		<skipSeleniumTests>false</skipSeleniumTests>
	</properties>
	<profiles>
		<profile>
			<id>compressjs</id>
			<build>
				<plugins>
					<!-- Compress jquery plugins -->
					<plugin>
						<groupId>net.alchim31.maven</groupId>
						<artifactId>yuicompressor-maven-plugin</artifactId>
						<version>1.3.2</version>
						<executions>
							<execution>
								<id>compressbootstrap</id>
								<phase>process-resources</phase>
								<goals>
									<goal>compress</goal>
								</goals>
								<configuration>
									<suffix>.min</suffix>
									<force>true</force>
									<encoding>UTF-8</encoding>
									<nocompress>false</nocompress>
									<outputDirectory>${basedir}/target/bootstrap</outputDirectory>
									<sourceDirectory>${basedir}/src/main/webapp/static/bootstrap</sourceDirectory>
									<excludeResources>true</excludeResources>
									<aggregations>
										<aggregation>
											<output>${basedir}/target/bootstrap/bootstrap-openolat.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/alert.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/button.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/collapse.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/dropdown.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/tab.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/transition.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/modal.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/tooltip.min.js</include>
												<include>${basedir}/target/bootstrap/javascripts/bootstrap/popover.min.js</include>
											</includes>
										</aggregation>
									</aggregations>
									<excludes>
										<exclude>**/jw/*</exclude>
										<exclude>**/dragula/*</exclude>
										<exclude>**/mediaelementjs/*</exclude>
										<exclude>**/mediaelementjs/**/*</exclude>
										<exclude>**/fullcalendar/*</exclude>
										<exclude>**/paella/**/*</exclude>
										<exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude>
										<exclude>**/openolat/jquery.contenteditor.v2.js</exclude>
										<exclude>**/interactjs/*</exclude>
										<exclude>**/scorm/*</exclude>
									</excludes>
								</configuration>
							</execution>
							<execution>
								<!-- compress movie player in place, don't append to any other file -->
								<id>compressmovieplayer</id>
								<phase>process-resources</phase>
								<goals>
									<goal>compress</goal>
								</goals>
								<configuration>
									<suffix>.min</suffix>
									<force>true</force>
									<encoding>UTF-8</encoding>
									<nocompress>false</nocompress>
									<outputDirectory>${basedir}/target/jsmovie</outputDirectory>
									<sourceDirectory>${basedir}/src/main/webapp/static/movie</sourceDirectory>
									<excludeResources>true</excludeResources>
									<aggregations>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/movie/player.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jsmovie/player.min.js</include>
											</includes>
										</aggregation>
									</aggregations>
									<excludes>
										<exclude>**/*.min.js</exclude>
										<exclude>**/jw/*</exclude>
										<exclude>**/dragula/*</exclude>
										<exclude>**/fullcalendar/*</exclude>
										<exclude>**/mediaelementjs/*</exclude>
										<exclude>**/mediaelementjs/**/*</exclude>
										<exclude>**/paella/**/*</exclude>
										<exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude>
										<exclude>**/openolat/jquery.contenteditor.v2.js</exclude>
										<exclude>**/interactjs/*</exclude>
										<exclude>**/scorm/*</exclude>
									</excludes>
								</configuration>
							</execution>
							<execution>
								<id>compressjs</id>
								<phase>process-resources</phase>
								<goals>
									<goal>compress</goal>
								</goals>
								<configuration>
									<suffix>.min</suffix>
									<force>true</force>
									<encoding>UTF-8</encoding>
									<nocompress>false</nocompress>
									<outputDirectory>${basedir}/target/jquery</outputDirectory>
									<sourceDirectory>${basedir}/src/main/webapp/static/js</sourceDirectory>
									<excludeResources>true</excludeResources>
									<aggregations>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/js.plugins.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/jquery/periodic/jquery.periodic.min.js</include>
												<include>${basedir}/target/jquery/jshashtable-2.1_src.min.js</include>
												<include>${basedir}/target/jquery/jquery/openolat/jquery.translator.min.js</include>
												<include>${basedir}/target/jquery/jquery/openolat/jquery.navbar.min.js</include>
												<include>${basedir}/target/jquery/jquery/openolat/jquery.bgcarrousel.min.js</include>
												<include>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/jquery.tinymce.min.js</include>
												<include>${basedir}/target/jquery/functions.min.js</include>
												<include>${basedir}/target/jquery/jquery/transit/jquery.transit.min.js</include>
												<include>${basedir}/target/bootstrap/bootstrap-openolat.min.js</include>
												<include>${basedir}/target/jquery/openolat/textarea.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/jquery/qti/jquery.qti.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes><!-- qtiAutosave, qtiTimer are loaded separately -->
												<include>${basedir}/target/jquery/jquery/qti/jquery.associate.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.choice.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.gapMatch.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.graphicAssociate.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.graphicGap.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.graphicOrder.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.hotspot.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.hotspot.responsive.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.match.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.match_dnd.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.order.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.positionObject.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.selectPoint.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.slider.min.js</include>
												<include>${basedir}/target/jquery/jquery/qti/jquery.countWords.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatmatheditor/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatmatheditor/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatqti/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatmovieviewer/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatmovieviewer/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatcharcount/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatcharcount/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatsmileys/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatsmileys/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/quotespliter/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/quotespliter/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatedusharing/plugin.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/tinymce4/tinymce/plugins/olatedusharing/plugin.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.statistics.chart.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/jquery/openolat/jquery.statistics.chart.min.js</include>
											</includes>
										</aggregation>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.timeline.min.js</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/target/jquery/jquery/openolat/jquery.timeline.min.js</include>
											</includes>
										</aggregation>
									</aggregations>
									<excludes>
										<exclude>**/jw/*</exclude>
										<exclude>**/dragula/*</exclude>
										<exclude>**/fullcalendar/*</exclude>
										<exclude>**/mediaelementjs/*</exclude>
										<exclude>**/mediaelementjs/**/*</exclude>
										<exclude>**/paella/**/*</exclude>
										<exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude>
										<exclude>**/openolat/jquery.contenteditor.v2.js</exclude>
										<exclude>**/interactjs/*</exclude>
										<exclude>**/scorm/*</exclude>
									</excludes>
								</configuration>
							</execution>
							<execution>
								<id>compresscss</id>
								<phase>process-resources</phase>
								<goals>
									<goal>compress</goal>
								</goals>
								<configuration>
									<suffix>.min</suffix>
									<force>true</force>
									<encoding>UTF-8</encoding>
									<nocompress>false</nocompress>
									<outputDirectory>${basedir}/target/jquery</outputDirectory>
									<sourceDirectory>${basedir}/src/main/webapp/static/js</sourceDirectory>
									<excludeResources>true</excludeResources>
									<aggregations>
										<aggregation>
											<output>${basedir}/src/main/webapp/static/js/js.plugins.min.css</output>
											<removeIncluded>false</removeIncluded>
											<includes>
												<include>${basedir}/src/main/webapp/static/js/fullcalendar/main.min.css</include>
												<include>${basedir}/target/jquery/tagify/tagify.min.css</include>
												<include>${basedir}/target/jquery/jquery/cropper/cropper.min.css</include>
												<include>${basedir}/target/jquery/jquery/sliderpips/jquery-ui-slider-pips.min.css</include>
												<include>${basedir}/target/jquery/jquery/ui/jquery-ui-1.11.4.custom.min.css</include>
												<include>${basedir}/src/main/webapp/static/js/dragula/dragula.min.css</include>
											</includes>
										</aggregation>
									</aggregations>
									<excludes>
										<exclude>**/jw/*</exclude>
										<exclude>**/dragula/*</exclude>
										<exclude>**/fullcalendar/fullcalendar.js</exclude>
										<exclude>**/fullcalendar/fullcalendar.min.js</exclude>
										<exclude>**/mediaelementjs/*</exclude>
										<exclude>**/mediaelementjs/**/*</exclude>
										<exclude>**/paella/**/*</exclude>
										<exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude>
										<exclude>**/openolat/jquery.contenteditor.v2.js</exclude>
										<exclude>**/interactjs/*</exclude>
										<exclude>**/scorm/*</exclude>
									</excludes>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<!-- This is the default build which had all dependencies needed by tomcat -->
		<profile>
			<id>tomcat</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
					<version>${org.slf4j}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-slf4j-impl</artifactId>
					<version>${apache.log4j}</version>
				</dependency>
				<!-- Apache CXF for tomcat -->
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-frontend-jaxws</artifactId>
					<version>${apache.cxf}</version>
					<exclusions>
						<exclusion>
							<groupId>org.apache.ant</groupId>
							<artifactId>ant</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-frontend-jaxrs</artifactId>
					<version>${apache.cxf}</version>
					<exclusions>
						<exclusion>
							<groupId>javax.annotation</groupId>
							<artifactId>javax.annotation-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-transports-http</artifactId>
					<version>${apache.cxf}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-rs-http-sci</artifactId>
					<version>${apache.cxf}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
				    <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
				    <version>${apache.cxf}</version>
				</dependency>
				<dependency>
				    <groupId>org.webjars</groupId>
				    <artifactId>swagger-ui</artifactId>
				    <version>3.48.0</version>
				</dependency>
				<dependency>
				    <groupId>jakarta.xml.ws</groupId>
				    <artifactId>jakarta.xml.ws-api</artifactId>
				    <version>2.3.3</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-core</artifactId>
					<version>${org.hibernate.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.slf4j</groupId>
							<artifactId>slf4j-log4j12</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.activation</groupId>
							<artifactId>javax.activation-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.xml.bind</groupId>
							<artifactId>jaxb-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-entitymanager</artifactId>
					<version>${org.hibernate.version}</version>
				</dependency>
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-hibernate-cache-v53</artifactId>
					<version>${org.infinispan.version}</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-hikaricp</artifactId>
					<version>${org.hibernate.version}</version>
				</dependency>
				
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-core</artifactId>
					<version>${org.infinispan.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.jboss.spec.javax.transaction</groupId>
							<artifactId>jboss-transaction-api_1.1_spec</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.logging</groupId>
							<artifactId>jboss-logging</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>woodstox-core-asl</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>stax2-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.rhq.helpers</groupId>
							<artifactId>rhq-pluginAnnotations</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
		
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>${org.mysql.version}</version>
				</dependency>
				<dependency>
					<groupId>org.postgresql</groupId>
					<artifactId>postgresql</artifactId>
					<version>${org.postgresql.version}</version>
					<exclusions>
						<exclusion>
							<groupId>com.github.dblock.waffle</groupId>
							<artifactId>waffle-jna</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.slf4j</groupId>
							<artifactId>slf4j-simple</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
		
				<dependency>
					<groupId>org.apache.geronimo.specs</groupId>
					<artifactId>geronimo-jms_1.1_spec</artifactId>
					<version>1.1.1</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-client</artifactId>
					<version>${activemq.version}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-broker</artifactId>
					<version>${activemq.version}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-spring</artifactId>
					<version>${activemq.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.apache.xbean</groupId>
							<artifactId>xbean-spring</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.apache.activemq</groupId>
							<artifactId>activemq-pool</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.apache.geronimo.specs</groupId>
							<artifactId>geronimo-jta_1.0.1B_spec</artifactId>
						</exclusion>
						<exclusion>
							<groupId>commons-pool</groupId>
							<artifactId>commons-pool</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
			</dependencies>
			
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<webResources>
								<resource>
									<directory>src/main/webapp-tomcat</directory>
									<filtering>false</filtering>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		
		<!-- This is a build which deliver a WAR for JBoss EAP, simple installation -->
		<profile>
			<id>jbosseap</id>
			<dependencies>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-to-slf4j</artifactId>
					<version>${apache.log4j}</version>
				</dependency>
				<!-- Apache CXF for tomcat -->
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-frontend-jaxws</artifactId>
					<version>${apache.cxf}</version>
					<exclusions>
						<exclusion>
							<groupId>org.apache.ant</groupId>
							<artifactId>ant</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-frontend-jaxrs</artifactId>
					<version>${apache.cxf}</version>
					<exclusions>
						<exclusion>
							<groupId>javax.annotation</groupId>
							<artifactId>javax.annotation-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
					<artifactId>cxf-rt-transports-http</artifactId>
					<version>${apache.cxf}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.cxf</groupId>
				    <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
				    <version>${apache.cxf}</version>
				</dependency>
				<dependency>
				    <groupId>org.webjars</groupId>
				    <artifactId>swagger-ui</artifactId>
				    <version>3.36.2</version>
				</dependency>
				<dependency>
				    <groupId>jakarta.xml.ws</groupId>
				    <artifactId>jakarta.xml.ws-api</artifactId>
				    <version>2.3.3</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-core</artifactId>
					<version>${org.hibernate.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.slf4j</groupId>
							<artifactId>slf4j-log4j12</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.activation</groupId>
							<artifactId>javax.activation-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.xml.bind</groupId>
							<artifactId>jaxb-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-entitymanager</artifactId>
					<version>${org.hibernate.version}</version>
				</dependency>
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-hibernate-cache-v53</artifactId>
					<version>${org.infinispan.version}</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-hikaricp</artifactId>
					<version>${org.hibernate.version}</version>
				</dependency>
				
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-core</artifactId>
					<version>${org.infinispan.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.jboss.spec.javax.transaction</groupId>
							<artifactId>jboss-transaction-api_1.1_spec</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.logging</groupId>
							<artifactId>jboss-logging</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>woodstox-core-asl</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>stax2-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.rhq.helpers</groupId>
							<artifactId>rhq-pluginAnnotations</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
		
				<dependency>
					<groupId>org.apache.geronimo.specs</groupId>
					<artifactId>geronimo-jms_1.1_spec</artifactId>
					<version>1.1.1</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-client</artifactId>
					<version>${activemq.version}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-broker</artifactId>
					<version>${activemq.version}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-spring</artifactId>
					<version>${activemq.version}</version>
					<exclusions>
						<exclusion>
							<groupId>org.apache.xbean</groupId>
							<artifactId>xbean-spring</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.apache.activemq</groupId>
							<artifactId>activemq-pool</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.apache.geronimo.specs</groupId>
							<artifactId>geronimo-jta_1.0.1B_spec</artifactId>
						</exclusion>
						<exclusion>
							<groupId>commons-pool</groupId>
							<artifactId>commons-pool</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
			</dependencies>
			
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<webResources>
								<resource>
									<directory>src/main/webapp-jbosseap</directory>
									<filtering>false</filtering>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<!-- This is only to play with an optimized WAR to cluster OpenOlat, highly experimental, never used in production -->
		<profile>
			<id>wildfly</id>
			<dependencies>
				<dependency>
					<groupId>javax.ws.rs</groupId>
					<artifactId>jsr311-api</artifactId>
					<version>1.1.1</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.geronimo.specs</groupId>
					<artifactId>geronimo-jms_1.1_spec</artifactId>
					<version>1.1.1</version>
					<scope>provided</scope>
				</dependency>
				
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-core</artifactId>
					<version>${org.hibernate.version}</version>
					<scope>provided</scope>
					<exclusions>
						<exclusion>
							<groupId>org.slf4j</groupId>
							<artifactId>slf4j-log4j12</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.activation</groupId>
							<artifactId>javax.activation-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>javax.xml.bind</groupId>
							<artifactId>jaxb-api</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-entitymanager</artifactId>
					<version>${org.hibernate.version}</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-hibernate-cache-v53</artifactId>
					<version>${org.infinispan.version}</version>
					<scope>provided</scope>
				</dependency>
				
				<dependency>
					<groupId>org.infinispan</groupId>
					<artifactId>infinispan-core</artifactId>
					<version>${org.infinispan.version}</version>
					<scope>provided</scope>
					<exclusions>
						<exclusion>
							<groupId>org.jboss.spec.javax.transaction</groupId>
							<artifactId>jboss-transaction-api_1.1_spec</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.jboss.logging</groupId>
							<artifactId>jboss-logging</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>woodstox-core-asl</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.codehaus.woodstox</groupId>
							<artifactId>stax2-api</artifactId>
						</exclusion>
						<exclusion>
							<groupId>org.rhq.helpers</groupId>
							<artifactId>rhq-pluginAnnotations</artifactId>
						</exclusion>
					</exclusions>
				</dependency>
		
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>${org.mysql.version}</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>org.postgresql</groupId>
					<artifactId>postgresql</artifactId>
					<version>${org.postgresql.version}</version>
					<scope>provided</scope>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<webResources>
								<resource>
									<directory>src/main/webapp-wildfly</directory>
									<filtering>false</filtering>
								</resource>
							</webResources>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	
		<profile>
			<id>mysqlunittests</id>
			<activation>
				<property>
					<name>with-mysql</name>
				</property>
			</activation>
			<properties>
				<testFailureIgnore>false</testFailureIgnore>
				<test.env>mysql</test.env>
				<skipTests>false</skipTests>
			</properties>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-resources-plugin</artifactId>
						<version>2.4.3</version>
						<executions>
							<execution>
								<id>copy-resources-4-mysqlunittests</id>
								<phase>generate-test-resources</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>${basedir}/target/test-classes</outputDirectory>
									<resources>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/test/profile/${test.env}</directory>
											<includes>
												<include>olat.local.properties</include>
											</includes>
											<filtering>true</filtering>
										</resource>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/main/resources/database/mysql</directory>
											<includes>
												<include>setupDatabase.sql</include>
											</includes>
											<filtering>false</filtering>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>sql-maven-plugin</artifactId>
						<version>1.5</version>
						<dependencies>
							<dependency>
								<groupId>mysql</groupId>
								<artifactId>mysql-connector-java</artifactId>
								<version>${org.mysql.version}</version>
							</dependency>
						</dependencies>
	
						<!-- common configuration shared by all executions -->
						<configuration>
							<driver>com.mysql.cj.jdbc.Driver</driver>
							<url>jdbc:mysql://localhost:${test.env.db.host.port}/${test.env.db.name}</url>
							<username>${test.env.db.user}</username>
							<password>${test.env.db.pass}</password>
						</configuration>
	
						<executions>
							<execution>
								<id>drop-mysql-db-before-test</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<!-- need another database to drop the targeted one -->
									<url>jdbc:mysql://localhost:${test.env.db.host.port}/olat</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
									<!-- ignore error when database is not avaiable -->
									<onError>continue</onError>
								</configuration>
							</execution>
	
							<execution>
								<id>create-mysql-db</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:mysql://localhost:${test.env.db.host.port}/olat</url>
									<!-- no transaction -->
									<autocommit>true</autocommit>
									<sqlCommand>create database ${test.env.db.name} default character set utf8</sqlCommand>
								</configuration>
							</execution>
	
							<execution>
								<id>create-mysql-schema</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<srcFiles>
										<srcFile>target/test-classes/setupDatabase.sql</srcFile>
									</srcFiles>
								</configuration>
							</execution>
							<!-- drop db after test -->
							<execution>
								<id>drop-mysql-db-after-test</id>
								<!-- there is no post-test phase, the next phase after "test" is "prepare-package" 
									for integration tests running against mysql generated via setupDatabase.sql 
									there is need to bind a similar drop/create/schema/drop to pre-integration-test 
									and post-integration-test -->
								<phase>prepare-package</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
							
							<!-- Same for integration-test -->
							<execution>
								<id>drop-mysql-db-before-integration</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<!-- need another database to drop the targeted one -->
									<url>jdbc:mysql://localhost:${test.env.db.host.port}/olat</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
									<!-- ignore error when database is not avaiable -->
									<onError>continue</onError>
								</configuration>
							</execution>
							<execution>
								<id>create-mysql-db-before-integration-test</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:mysql://localhost:${test.env.db.host.port}/olat</url>
									<!-- no transaction -->
									<autocommit>true</autocommit>
									<sqlCommand>create database ${test.env.db.name} default character set utf8</sqlCommand>
								</configuration>
							</execution>
							<execution>
								<id>create-mysql-schema-before-integration-test</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<srcFiles>
										<srcFile>target/test-classes/setupDatabase.sql</srcFile>
									</srcFiles>
								</configuration>
							</execution>
							<!-- drop db after test -->
							<execution>
								<id>drop-mysql-db-after-integration-test</id>
								<phase>post-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	
		<profile>
			<id>postgresqlunittests</id>
			<activation>
				<property>
					<name>with-postgresql</name>
				</property>
			</activation>
			<properties>
				<testFailureIgnore>false</testFailureIgnore>
				<test.env>postgresql</test.env>
				<skipTests>false</skipTests>
			</properties>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-resources-plugin</artifactId>
						<version>2.4.3</version>
						<executions>
							<execution>
								<id>copy-resources-4-postgresqlunittests</id>
								<phase>generate-test-resources</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>${basedir}/target/test-classes</outputDirectory>
									<resources>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/test/profile/${test.env}</directory>
											<includes>
												<include>olat.local.properties</include>
											</includes>
											<filtering>true</filtering>
										</resource>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/main/resources/database/postgresql</directory>
											<includes>
												<include>setupDatabase.sql</include>
											</includes>
											<filtering>true</filtering>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>sql-maven-plugin</artifactId>
						<version>1.5</version>
	
						<dependencies>
							<dependency>
								<groupId>org.postgresql</groupId>
								<artifactId>postgresql</artifactId>
								<version>${org.postgresql.version}</version>
								<exclusions>
									<exclusion>
										<groupId>com.github.dblock.waffle</groupId>
										<artifactId>waffle-jna</artifactId>
									</exclusion>
									<exclusion>
										<groupId>org.slf4j</groupId>
										<artifactId>slf4j-simple</artifactId>
									</exclusion>
								</exclusions>
							</dependency>
						</dependencies>
	
						<!-- common configuration shared by all executions -->
						<configuration>
							<driver>org.postgresql.Driver</driver>
							<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/${test.env.db.name}</url>
							<username>${test.env.db.postgresql.user}</username>
							<password>${test.env.db.postgresql.pass}</password>
						</configuration>
	
						<executions>
							<execution>
								<id>drop-postgresql-db-before-test</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<!-- need another database to drop the targeted one -->
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
									<!-- ignore error when database is not avaiable -->
									<onError>continue</onError>
								</configuration>
							</execution>
	
							<execution>
								<id>create-postgresql-db</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<!-- no transaction -->
									<autocommit>true</autocommit>
									<sqlCommand>create database ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
	
							<execution>
								<id>create-postgresql-schema</id>
								<phase>process-test-resources</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<srcFiles>
										<srcFile>target/test-classes/setupDatabase.sql</srcFile>
									</srcFiles>
								</configuration>
							</execution>
	
							<!-- drop db after test -->
							<execution>
								<id>drop-postgresql-db-after-test</id>
								<!-- there is no post-test phase, the next phase after "test" is "prepare-package" 
									for integration tests running against mysql generated via setupDatabase.sql 
									there is need to bind a similar drop/create/schema/drop to pre-integration-test 
									and post-integration-test -->
								<phase>prepare-package</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
	
							<!-- Same for integration tests -->
							<execution>
								<id>drop-postgresql-db-before-integtration-test</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<!-- need another database to drop the targeted one -->
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
									<!-- ignore error when database is not avaiable -->
									<onError>continue</onError>
								</configuration>
							</execution>
	
							<execution>
								<id>create-postgresql-db-before-integration-test</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<!-- no transaction -->
									<autocommit>true</autocommit>
									<sqlCommand>create database ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
	
							<execution>
								<id>create-postgresql-schema-before-integration-test</id>
								<phase>pre-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<autocommit>true</autocommit>
									<srcFiles>
										<srcFile>target/test-classes/setupDatabase.sql</srcFile>
									</srcFiles>
								</configuration>
							</execution>
	
							<!-- drop db after test -->
							<execution>
								<id>drop-postgresql-db-after-integration-test</id>
								<phase>post-integration-test</phase>
								<goals>
									<goal>execute</goal>
								</goals>
								<configuration>
									<url>jdbc:postgresql://localhost:${test.env.db.postgresql.host.port}/postgres</url>
									<autocommit>true</autocommit>
									<sqlCommand>drop database if exists ${test.env.db.name}</sqlCommand>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	
		<profile>
			<id>oracleunittests</id>
			<activation>
				<property>
					<name>with-oracle</name>
				</property>
			</activation>
			<properties>
				<testFailureIgnore>false</testFailureIgnore>
				<test.env>oracle</test.env>
				<skipTests>false</skipTests>
			</properties>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-resources-plugin</artifactId>
						<version>2.4.3</version>
						<executions>
							<execution>
								<id>copy-resources-4-oracleunittests</id>
								<phase>generate-test-resources</phase>
								<goals>
									<goal>copy-resources</goal>
								</goals>
								<configuration>
									<outputDirectory>${basedir}/target/test-classes</outputDirectory>
									<resources>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/test/profile/${test.env}</directory>
											<includes>
												<include>olat.local.properties</include>
											</includes>
											<filtering>true</filtering>
										</resource>
										<resource>
											<!-- place resources you like to get filtered an copied -->
											<directory>src/main/resources/database/oracle</directory>
											<includes>
												<include>setupDatabase.sql</include>
											</includes>
											<filtering>true</filtering>
										</resource>
									</resources>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
			<dependencies>
				<dependency>
					<groupId>com.oracle.ojdbc</groupId>
					<artifactId>ojdbc8</artifactId>
					<version>19.3.0.0</version>
				</dependency>
			</dependencies>
		</profile>
	</profiles>
	<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>openolat-repo</id>
			<name>OpenOLAT Public Maven Repository Group</name>
			<url>https://nexus.openolat.org/nexus/content/groups/public</url>
			<layout>default</layout>
			<releases>
				<enabled>true</enabled>
				<updatePolicy>never</updatePolicy>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<updatePolicy>daily</updatePolicy>
			</snapshots>
		</repository>
		<repository>
			<id>sonatype-snapshot</id>
			<name>Sonatype Snapshot</name>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
			<releases>
				<enabled>true</enabled>
				<updatePolicy>never</updatePolicy>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<updatePolicy>daily</updatePolicy>
			</snapshots>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>openolat-plugin-repo</id>
			<name>OpenOLAT Public Maven Repository Group</name>
			<url>https://nexus.openolat.org/nexus/content/groups/public</url>
			<layout>default</layout>
			<releases>
				<enabled>true</enabled>
				<updatePolicy>never</updatePolicy>
			</releases>
		</pluginRepository>
	</pluginRepositories>
	<build>
		<!-- Useful maven commands: o mvn dependency:tree - check to see what other 
			dependencies get downloaded by an artifact o Maven lifecycle: Each phase 
			of the lifecycle can also be called independent - e.g. mvn process-resources 
			- http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference 
			o mvn versions:display-plugin-updates (find updates to maven plugins) o mvn 
			versions:use-latest-versions (automatically update dependencies. WARNING!!!) 
			o mvn versions:display-dependency-updates (shows updates for dependencies) 
			o mvn help:effective-pom - displays the computed pom, where you will see 
			what is getting executed after expanding vars and plugin settings -->

		<resources>
			<!-- as long as we have resources like html, css, js in the src/main/java 
				tree we need these two entries. the first tells maven to treat the java folder 
				as the resource folder but not to copy the java files. The later tell maven 
				that we have an other resource folder which is normally the default -->
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
					<exclude>**/*.vsd</exclude>
					<exclude>**/*.odg</exclude>
					<exclude>**/*.odt</exclude>
					<exclude>**/*.pdf</exclude>
					<exclude>**/*.graffle</exclude>
					<exclude>**/doc-files/**</exclude>
					<exclude>**/propertyHandlers.jpg</exclude>
					<exclude>**/package.html</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<!-- when enabled resources will be searched and variables replaces with 
					values -->
				<filtering>false</filtering>
				<excludes>
					<exclude>log4j2.xml</exclude>
				</excludes>
			</resource>
		</resources>
		<testResources>
			<!-- Same comment as for src/main/java also applies to src/test/java -->
			<testResource>
				<directory>src/test/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</testResource>
			<testResource>
				<directory>src/test/resources</directory>
				<!-- when enabled resources will be searched and variables replaces with values -->
				<filtering>true</filtering>
			</testResource>
		</testResources>
		<plugins>
			<!-- Set the build number from git -->
			<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
				<version>2.2.5</version>
				<executions>
					<execution>
						<id>get-the-git-infos</id>
						<goals>
							<goal>revision</goal>
						</goals>
						<phase>validate</phase>
					</execution>
				</executions>
				<configuration>
					<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.8</version>
				<executions>
					<!-- Copy the notice.txt file -->
					<execution>
						<id>copy-notices-txt</id>
						<phase>compile</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<target name="copy notice.txt to web project">      
								<copy file="${project.basedir}/NOTICE.TXT"
									tofile="${project.build.outputDirectory}/NOTICE.TXT"/>
							</target>
						</configuration>                       
					</execution>
					<!-- Download tomcat for integration test -->
					<execution>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<target>
								<mkdir dir="${project.build.directory}/downloads" />
								<get src="https://nexus.openolat.org/nexus/content/repositories/openolat/org/apache/tomcat/apache-tomcat-arq/9.0.38/apache-tomcat-arq-9.0.38.zip" dest="${project.build.directory}/downloads" verbose="true" skipexisting="true" />
								<unzip src="${project.build.directory}/downloads/apache-tomcat-arq-9.0.38.zip" dest="${project.build.directory}/arq-apache-tomcat-9.0.38" />
							</target>
						</configuration>
					</execution> 
				</executions>
			</plugin>
            <!-- Unit tests -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.22.2</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<skipTests>${skipTests}</skipTests>
					<argLine>-Xmx512m -Xms256m -Djava.awt.headless=true</argLine>
					<systemPropertyVariables>
						<java.io.tmpdir>${project.build.directory}/olatdata</java.io.tmpdir>
					</systemPropertyVariables>
					<trimStackTrace>false</trimStackTrace>
					<testNGArtifactName>none:none</testNGArtifactName>
					<includes>
						<include>org/olat/test/AllTestsJunit4.java</include>
						<include>org/olat/test/QtiWorksTests.java</include>
					</includes>
				</configuration>
			</plugin>
			<!-- Selenium tests -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>2.22.2</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<skipITs>${skipSeleniumTests}</skipITs>
					<skipTests>${skipSeleniumTests}</skipTests>
					<reuseForks>false</reuseForks>
					<argLine>-Xmx512m -Xms256m -Djava.awt.headless=true</argLine>
					<trimStackTrace>false</trimStackTrace>
					<!-- Sometimes a browser cannot be started -->
					<rerunFailingTestsCount>1</rerunFailingTestsCount>
					<systemPropertyVariables>
						<profile>${test.env}</profile>
						<test.env.db.name>${test.env.db.name}</test.env.db.name>
						<test.env.db.user>${test.env.db.user}</test.env.db.user>
						<test.env.db.pass>${test.env.db.pass}</test.env.db.pass>
						<test.env.db.host.port>${test.env.db.host.port}</test.env.db.host.port>
						<test.env.db.postgresql.user>${test.env.db.postgresql.user}</test.env.db.postgresql.user>
						<test.env.db.postgresql.pass>${test.env.db.postgresql.pass}</test.env.db.postgresql.pass>
						<test.env.db.postgresql.host.port>${test.env.db.postgresql.host.port}</test.env.db.postgresql.host.port>
						<test.env.instance.id>${test.env.instance.id}</test.env.instance.id>
						<test.env.msgraph.app.id>${test.env.msgraph.app.id}</test.env.msgraph.app.id>
						<test.env.msgraph.app.secret>${test.env.msgraph.app.secret}</test.env.msgraph.app.secret>
						<test.env.msgraph.app.tenant>${test.env.msgraph.app.tenant}</test.env.msgraph.app.tenant>
						<test.env.msgraph.teams.producer>${test.env.msgraph.teams.producer}</test.env.msgraph.teams.producer>
						<arquillian.launch>tomcat-8-managed</arquillian.launch>
						<webdriver.browser>${test.env.webdriver.browser}</webdriver.browser>
						<webdriver.firefox.version>${test.env.webdriver.firefox.version}</webdriver.firefox.version>
						<webdriver.chrome.version>${test.env.webdriver.chrome.version}</webdriver.chrome.version>
						<webdriver.chrome.arguments>${test.env.webdriver.chrome.arguments}</webdriver.chrome.arguments>
					</systemPropertyVariables>
					<testNGArtifactName>none:none</testNGArtifactName>
					<includes>
						<include>org/olat/selenium/*Test.java</include>
					</includes>
				</configuration>
				<executions>
					<execution>
						<id>selenium-test</id>
						<goals>
							<goal>integration-test</goal>
						</goals>
					</execution>
					<execution>
						<id>selenium-verify</id>
						<goals>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
        </plugins>
		<pluginManagement>
			<plugins>
				<!-- OLAT requires JDK 1.8 or later ! -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<source>${targetJdk}</source>
						<target>${targetJdk}</target>
						<encoding>UTF-8</encoding>
					</configuration>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<version>3.2.2</version>
					<configuration>
						<!--
						<attachClasses>true</attachClasses>
						-->
						<directory>src/main/java</directory>
						<archive>
							<manifest>
								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							</manifest>
							<manifestEntries>
								<Build-Change-Set>${git.commit.id}</Build-Change-Set>
								<Build-Change-Set-Date>${git.commit.time}</Build-Change-Set-Date>
								<Build-Revision-Number>${git.commit.id.abbrev}</Build-Revision-Number>
								<Implementation-Build>${buildNumber}</Implementation-Build>
							</manifestEntries>
						</archive>
						<warSourceExcludes>**/*.pxm, **/*.psd, **/*.sh, static/bootstrap/**, **/*.README</warSourceExcludes>
						<webResources>
							<resource>
								<directory>src/main/webapp</directory>
								<filtering>false</filtering>
							</resource>
						</webResources>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-antrun-plugin</artifactId>
										<versionRange>[1.8,)</versionRange>
										<goals>
											<goal>run</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.codehaus.mojo</groupId>
										<artifactId>sql-maven-plugin</artifactId>
										<versionRange>[1.5,)</versionRange>
										<goals>
											<goal>execute</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore></ignore>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>

				<!-- The Eclipse plugin is only of interest to developers and requires 
					that WTP be installed. -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-eclipse-plugin</artifactId>
					<version>2.9</version>
					<configuration>
				        <linkedResources>
			               	<linkedResource>
		                        <name>/src/main/java/olat.local.properties</name>
		                        <type>1</type>
		                        <location>${basedir}/olat.local.properties</location>
                			</linkedResource>
                			<linkedResource>
		                        <name>/src/test/java/olat.local.properties</name>
		                        <type>1</type>
		                        <location>${basedir}/src/test/profile/mysql/olat.local.properties</location>
                			</linkedResource>
				        </linkedResources>				        
						<wtpversion>2.0</wtpversion>
						<!-- context name for servlet container e.g. localhost:8080/olat -->
						<wtpContextName>olat</wtpContextName>
						<downloadSources>true</downloadSources>
								<additionalConfig>
									<file>
										<name>.settings/org.eclipse.core.resources.prefs</name>
										<content>
											<![CDATA[eclipse.preferences.version=1
											encoding/<project>=UTF-8]]>
										</content>
									</file>
								</additionalConfig>
					</configuration>
				</plugin>

				<!-- reporting i.e., the site goal requires a more recent plugin version -->
				<plugin>
					<artifactId>maven-site-plugin</artifactId>
					<version>3.1</version>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-enforcer-plugin</artifactId>
					<version>3.0.0-M2</version>
					<executions>
						<execution>
							<id>show-versions</id>
							<phase>validate</phase>
							<goals>
								<goal>display-info</goal>
							</goals>
						</execution>
						<execution>
							<id>enforce-versions</id>
							<goals>
								<goal>enforce</goal>
							</goals>
							<configuration>
								<rules>
									<requireMavenVersion>
										<version>3.0.5</version>
									</requireMavenVersion>
									<requireJavaVersion>
										<version>11+</version>
									</requireJavaVersion>
								</rules>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<!-- Dependency checks -->
				<plugin>
					<groupId>org.owasp</groupId>
					<artifactId>dependency-check-maven</artifactId>
					<version>4.0.0</version>
					<executions>
						<execution>
							<goals>
								<goal>check</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>versions-maven-plugin</artifactId>
					<version>2.7</version>
					<configuration>
						<rulesUri>file://${basedir}/scripts/version-rules.xml</rulesUri>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<!-- check with mvn dependency:tree to see what other dep. get downloaded -->
	<dependencies>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-client</artifactId>
			<version>${activemq.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-broker</artifactId>
			<version>${activemq.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.activemq</groupId>
			<artifactId>activemq-spring</artifactId>
			<version>${activemq.version}</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.apache.xbean</groupId>
					<artifactId>xbean-spring</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.activemq</groupId>
					<artifactId>activemq-pool</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.geronimo.specs</groupId>
					<artifactId>geronimo-jta_1.0.1B_spec</artifactId>
				</exclusion>
				<exclusion>
					<groupId>commons-pool</groupId>
					<artifactId>commons-pool</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<!-- Used by SCORM implementation -->
			<groupId>org.apache-extras.beanshell</groupId>
			<artifactId>bsh</artifactId>
			<version>2.0b6</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.15</version>
		</dependency>
		<dependency>
			<!-- Used by at least commons-validator -->
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.2</version>
		</dependency>
		<dependency>
			<!-- Used by email address validator -->
			<groupId>commons-validator</groupId>
			<artifactId>commons-validator</artifactId>
			<version>1.7</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
				<exclusion>
					<groupId>commons-digester</groupId>
					<artifactId>commons-digester</artifactId>
				</exclusion>
				<exclusion>
					<groupId>commons-beanutils</groupId>
					<artifactId>commons-beanutils</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<!-- Used by at least commons-fileupload, webdriver -->
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.8.0</version>
		</dependency>
		<dependency>
			<groupId>org.jcodec</groupId>
			<artifactId>jcodec</artifactId>
			<version>0.2.5</version>
		</dependency>
		<dependency>
			<groupId>org.jcodec</groupId>
			<artifactId>jcodec-javase</artifactId>
			<version>0.2.5</version>
		</dependency>
		<dependency>
			<groupId>org.mnode.ical4j</groupId>
			<artifactId>ical4j</artifactId>
			<version>1.0.2</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.mnode.ical4j</groupId>
			<artifactId>ical4j-zoneinfo-outlook</artifactId>
			<version>1.0.4</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.openolat.jamwiki</groupId>
			<artifactId>jamwiki-core</artifactId>
			<version>1.0.3</version>
		</dependency>
		<dependency>
			<groupId>org.openolat</groupId>
			<artifactId>openmeetingws</artifactId>
			<version>3.0.8</version>
		</dependency>
		<dependency>
			<groupId>org.openolat</groupId>
			<artifactId>viterows</artifactId>
			<version>10.3.0</version>
		</dependency>
		<dependency>
			<groupId>org.openolat</groupId>
			<artifactId>edusharingws</artifactId>
			<version>4.1.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>${apache.poi}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>${apache.poi}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>${apache.pdfbox}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>xmpbox</artifactId>
			<version>${apache.pdfbox}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcmail-jdk15on</artifactId>
			<version>1.68</version>
		</dependency>
		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcprov-jdk15on</artifactId>
			<version>1.68</version>
		</dependency>
		<dependency>
		    <groupId>com.github.scribejava</groupId>
		    <artifactId>scribejava-apis</artifactId>
		    <version>8.3.0</version>
		</dependency>
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt-api</artifactId>
			<version>${io.jsonwebtoken}</version>
		</dependency>
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt-impl</artifactId>
			<version>${io.jsonwebtoken}</version>
			 <scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>io.jsonwebtoken</groupId>
			<artifactId>jjwt-jackson</artifactId>
			<version>${io.jsonwebtoken}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>jaxen</groupId>
			<artifactId>jaxen</artifactId>
			<version>1.2.0</version>
			<exclusions>
				<exclusion>
					<groupId>com.ibm.icu</groupId>
					<artifactId>icu4j</artifactId>
				</exclusion>
				<exclusion>
					<groupId>xalan</groupId>
					<artifactId>xalan</artifactId>
				</exclusion>
				<exclusion>
					<groupId>jdom</groupId>
					<artifactId>jdom</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.jdom</groupId>
			<artifactId>jdom</artifactId>
			<version>1.1.3</version>
		</dependency>
		<dependency>
			<groupId>org.dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>2.1.3</version>
		</dependency>
		<dependency>
			<groupId>fmath</groupId>
			<artifactId>fmath-latex-mathml</artifactId>
			<version>3.1</version>
			<!-- need org.jdom2 2.0.6 -->
		</dependency>
		<dependency>
			<groupId>jgrapht</groupId>
			<artifactId>jgrapht</artifactId>
			<version>0.6.0</version>
		</dependency>
		<!-- Start dependency to qtiworks -->
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-jqtiplus</artifactId>
			<version>${qtiworks.version}</version>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-jqtiplus</artifactId>
			<version>${qtiworks.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-mathassess</artifactId>
			<version>${qtiworks.version}</version>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-mathassess-glue</artifactId>
			<version>${qtiworks.version}</version>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-mathassess-glue</artifactId>
			<version>${qtiworks.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-samples</artifactId>
			<version>${qtiworks.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.openolat.qtiworks</groupId>
			<artifactId>qtiworks-samples</artifactId>
			<version>${qtiworks.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>
		<!-- End dependency to qtiworks -->
		<dependency>
			<groupId>org.openolat.imscp</groupId>
			<artifactId>manifest</artifactId>
			<version>1.4.4</version>
		</dependency>
		<dependency>
			<groupId>com.rometools</groupId>
			<artifactId>rome</artifactId>
			<version>1.7.2</version>
			<exclusions>
				<exclusion>
					<groupId>jdom</groupId>
					<artifactId>jdom</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- logging stuff -->	
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
    		<artifactId>log4j-api</artifactId>
			<version>${apache.log4j}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-jul</artifactId>
			<version>${apache.log4j}</version>
		</dependency>

		<!-- Replace commons-logging -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-jcl</artifactId>
			<version>${apache.log4j}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>${apache.log4j}</version>
		</dependency>
		<dependency>
			<groupId>com.lmax</groupId>
			<artifactId>disruptor</artifactId>
			<version>3.4.4</version>
		</dependency>

		<!-- basic LTI stuff for lti demo: http://www.imsglobal.org/toolsinteroperability2.cfm -->
		<dependency>
			<groupId>org.sakaiproject.basiclti</groupId>
			<artifactId>basiclti-util</artifactId>
			<version>2.10.SP1</version>
		</dependency>
		<!-- J2EE dependencies but provided -->
		<dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
			<version>4.0.4</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>jakarta.websocket</groupId>
			<artifactId>jakarta.websocket-api</artifactId>
			<version>1.1.2</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-jms_1.1_spec</artifactId>
			<version>1.1.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>jakarta.xml.ws</groupId>
		    <artifactId>jakarta.xml.ws-api</artifactId>
		    <version>2.3.3</version>
			<scope>test</scope>
		</dependency>
		<!-- core dependencies -->
		<dependency>
			<groupId>nu.validator</groupId>
			<artifactId>htmlparser</artifactId>
			<version>1.4.16</version>
		</dependency>
		<dependency>
			<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
			<artifactId>owasp-java-html-sanitizer</artifactId>
			<version>20200713.1</version>
		</dependency>
		<dependency>
			<groupId>org.w3c.css</groupId>
			<artifactId>sac</artifactId>
			<version>1.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>batik-css</artifactId>
			<version>1.14</version>
			<exclusions>
				<exclusion>
					<groupId>xml-apis</groupId>
					<artifactId>xml-apis-ext</artifactId>
				</exclusion>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>batik-util</artifactId>
			<version>1.14</version>
		</dependency>
		<dependency>
			<groupId>de.java2html</groupId>
			<artifactId>java2html</artifactId>
			<version>5.0</version>
		</dependency>
		<!-- 
		<dependency>
			<groupId>commons-httpclient</groupId>
			<artifactId>commons-httpclient</artifactId>
			<version>3.1</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		-->
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>4.4.14</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.13</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>4.5.13</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-text</artifactId>
			<version>1.9</version>
		</dependency>
		<dependency>
			<groupId>com.opencsv</groupId>
			<artifactId>opencsv</artifactId>
			<version>4.6</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
				<exclusion>
					<groupId>commons-beanutils</groupId>
					<artifactId>commons-beanutils</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.infinispan</groupId>
			<artifactId>infinispan-core</artifactId>
			<version>${org.infinispan.version}</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.jboss.spec.javax.transaction</groupId>
					<artifactId>jboss-transaction-api_1.1_spec</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.jboss.logging</groupId>
					<artifactId>jboss-logging</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.codehaus.woodstox</groupId>
					<artifactId>woodstox-core-asl</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.codehaus.woodstox</groupId>
					<artifactId>stax2-api</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.rhq.helpers</groupId>
					<artifactId>rhq-pluginAnnotations</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>${org.hibernate.version}</version>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.activation</groupId>
					<artifactId>javax.activation-api</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.xml.bind</groupId>
					<artifactId>jaxb-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>${org.hibernate.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.infinispan</groupId>
			<artifactId>infinispan-hibernate-cache-v53</artifactId>
			<version>${org.infinispan.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-hikaricp</artifactId>
			<version>${org.hibernate.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-engine-core</artifactId>
			<version>2.3</version>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20210307</version>
		</dependency>
		<dependency>
			<groupId>jazzlib</groupId>
			<artifactId>jazzlib</artifactId>
			<version>0.0.6</version> <!-- do not replace with 0.0.7 as this version is highly patched. -->
			<classifier>patched</classifier>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.3.2</version>
			<exclusions>
				<exclusion>
					<groupId>com.mchange</groupId>
					<artifactId>c3p0</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.mchange</groupId>
					<artifactId>mchange-commons-java</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.zaxxer</groupId>
					<artifactId>HikariCP-java7</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.17</version>
		</dependency>
		<dependency>
			<groupId>com.sun.mail</groupId>
			<artifactId>jakarta.mail</artifactId>
			<version>1.6.5</version>		
		</dependency>
		<dependency>
			<groupId>com.neemsoft</groupId>
			<artifactId>jmep</artifactId>
			<version>unknown</version>
			<classifier>patched</classifier> <!-- unknown patched version of jmep (java mathematical expression parser)[http://jmep.tigris.org/], 
				do not replace unless you know what you do! -->
		</dependency>
		<!-- Microsoft Graph -->
		<dependency>
			<groupId>com.microsoft.graph</groupId>
			<artifactId>microsoft-graph-beta</artifactId>
			<version>0.19.0-SNAPSHOT</version>
		</dependency>
		<!-- Overwrite selenium dependency to okhttp v3 -->
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp</artifactId>
			<version>4.9.1</version>
		</dependency>
		<dependency>
			<groupId>com.microsoft.azure</groupId>
			<artifactId>msal4j</artifactId>
			<version>1.10.0</version>
			<exclusions>
				<exclusion>
					<groupId>com.sun.mail</groupId>
					<artifactId>javax.mail</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- End Microsoft Graph -->
		<!-- Lucene dependencies -->
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-core</artifactId>
			<version>${lucene.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-highlighter</artifactId>
			<version>${lucene.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-queryparser</artifactId>
			<version>${lucene.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-analyzers-common</artifactId>
			<version>${lucene.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-suggest</artifactId>
			<version>${lucene.version}</version>
		</dependency>
		
		<!-- End lucene dependencies -->
		<!-- Spring dependencies -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${org.springframework.version}</version>
			<exclusions>
				<exclusion><!-- use jlc-over-slfj because we still use log4j version 1.2 -->
					<groupId>org.springframework</groupId>
					<artifactId>spring-jcl</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${org.springframework.version}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-fileupload</groupId>
					<artifactId>commons-fileupload</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- end Spring dependencies -->
		<!-- Start Apache CXF dependency and Active MQ Broker -->
		<dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-base</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.core</groupId>
        	<artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.datatype</groupId>
        	<artifactId>jackson-datatype-jsr310</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.dataformat</groupId>
        	<artifactId>jackson-dataformat-yaml</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
        	<groupId>com.fasterxml.jackson.dataformat</groupId>
        	<artifactId>jackson-dataformat-xml</artifactId>
            <version>${jackson.version}</version>
        </dependency>
		<!-- end Apache CXF dependency and Active MQ Broker -->
		
		<!-- paypal -->
		<dependency>
			<groupId>com.paypal.sdk</groupId>
			<artifactId>adaptivepaymentssdk</artifactId>
			<version>2.9.117</version>
		</dependency>
		<dependency>
			<groupId>com.paypal.sdk</groupId>
			<artifactId>checkout-sdk</artifactId>
			<version>1.0.3</version>
		</dependency>
		<dependency>
			<groupId>com.paypal.sdk</groupId>
			<artifactId>rest-api-sdk</artifactId>
			<version>1.14.0</version>
		</dependency>
		<!-- end Paypal -->

		<!-- Start test dependencies -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>3.19.0</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>2.7.22</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>xmlunit</groupId>
			<artifactId>xmlunit</artifactId>
			<version>1.6</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>io.undertow</groupId>
		    <artifactId>undertow-core</artifactId>
		    <version>${io.undertow}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>io.undertow</groupId>
		    <artifactId>undertow-servlet</artifactId>
		    <version>${io.undertow}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.zapodot</groupId>
			<artifactId>embedded-ldap-junit</artifactId>
			<version>0.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.github.kirviq</groupId>
			<artifactId>dumbster</artifactId>
			<version>1.7.1</version>
			<scope>test</scope>
		</dependency>
    
		<!-- Start test dependencies for Arquillian and Selenium -->
		<dependency>
			<groupId>org.jboss.arquillian.junit</groupId>
			<artifactId>arquillian-junit-container</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.jboss.arquillian.container</groupId>
			<artifactId>arquillian-tomcat-managed-8</artifactId>
			<version>1.1.0.Final</version>
		<scope>test</scope>
      	</dependency>
		<dependency>
			<groupId>org.jboss.arquillian.extension</groupId>
			<artifactId>arquillian-drone-impl</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.jboss.arquillian.extension</groupId>
			<artifactId>arquillian-drone-webdriver</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.eu.ingwar.tools</groupId>
			<artifactId>arquillian-suite-extension</artifactId>
			<version>1.2.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.6</version>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>30.1.1-jre</version>
		</dependency>
		<!--  selenium first -->
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-server</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-api</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-support</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-leg-rc</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>lift</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<!-- Driver -->
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-chrome-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-edge-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-firefox-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-ie-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-opera-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-remote-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-safari-driver</artifactId>
			<version>${version.selenium}</version>
			<scope>test</scope>
		</dependency>
		<!-- End test dependencies -->
	</dependencies>
	
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.jboss.arquillian</groupId>
				<artifactId>arquillian-bom</artifactId>
				<version>1.6.0.Final</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>
			<dependency>
				<groupId>org.jboss.arquillian.extension</groupId>
				<artifactId>arquillian-drone-bom</artifactId>
				<version>${version.drone}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	
	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>2.3.1</version>
				<configuration>
					<!-- disable checking of url's im pom's -->
					<dependencyDetailsEnabled>false</dependencyDetailsEnabled>
					<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>2.22.2</version>
			</plugin>
		</plugins>
	</reporting>
	
	<ciManagement>
		<system>Jenkins</system>
		<url>https://jenkins.frentix.com</url>
	</ciManagement>
</project>