<commit_before><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>

	<parent>
	  <groupId>uk.ac.rothamsted.knetminer</groupId>
	  <artifactId>knetminer-common</artifactId>
	  <version>2.0RC7</version>
	</parent>  

	<artifactId>app-common</artifactId>
	<name>app-common - KnetMiner App top/common POM container</name>
	<version>5.0.1-SNAPSHOT</version>
	<description>
		KnetMiner is a platform for fast candidate gene discovery using data mining techniques.
		See http://github.com/Rothamsted/knetminer/wiki for technical details.
	</description>
	<url>http://knetminer.org/</url>
	<packaging>pom</packaging>

	<organization>
		<name>Rothamsted Research</name>
		<url>http://www.rothamsted.ac.uk/</url>
	</organization>

	<licenses>
		<license>
			<name>GNU GPL</name>
			<url>http://www.gnu.org/licenses/gpl.html</url>
		</license>
	</licenses>

	<modules>
    <module>client-base</module>
    <module>server-base</module>
    <module>server-datasource-api</module>
    <module>server-datasource-ondexlocal</module>
    <module>server-ondex</module>
    <module>aratiny</module>
	</modules>

	<properties>
		
		<!-- 
		  Several of these properties can be overriden by instance-specific Maven profiles.
		  Here, we give values suitable for maven tests (eg, in aratiny).
		  
		  See TODO.
		 -->
		<knetminer.datasetDir>${project.build.testOutputDirectory}/knetminer-dataset</knetminer.datasetDir>
		<knetminer.configDir>${knetminer.datasetDir}/config</knetminer.configDir>
		<knetminer.dataDir>${knetminer.datasetDir}/data</knetminer.dataDir>

		<!-- This is where the file has to be found BY TOMCAT, NOT NECESSARILY where it is during builds -->
		<knetminer.configFile>${knetminer.configDir}/data-source.xml</knetminer.configFile>		

		<!--
			In most cases, probably you'll be fine with the overriding provided below, in the 'docker' profile.
			For aratiny, we need this non-common value since it's difficult to rename a downloaded test file. 
		-->
		<knetminer.oxlFile>${project.build.directory}/dependency/poaceae-sample.oxl</knetminer.oxlFile>
		 
		<!--  Change these variables as appropriate or use maven args to provide them ! -->
		<knetminer.dataSourceId>aratiny</knetminer.dataSourceId>
		<knetminer.specieName>Arabidopsis Thaliana</knetminer.specieName>
		<knetminer.appDescription>Knetminer instance about tiny arabidopsis data set</knetminer.appDescription>
		<knetminer.appKeywords>arabidopsis, a.thaliana, knetminer, quickstart, demo, docker</knetminer.appKeywords>
		
		<!-- 3702=Ara,4565=Wheat,4577=Maize -->
		<knetminer.specieTaxId>3702</knetminer.specieTaxId>
		
		<!-- 
			If this is non-empty, the genes used to seed the initial semantic motif graph traverser are taken from this
			file. Its format is very simple, see the example mentioned here. This variable must be defined for
			things to work, the empty default doesn't trigger this behaviour and causes the seed to be computed from
			knetminer.specieTaxId. As usually, this can be redefined in a setting file, inside the docker profile.
		-->
		<knetminer.backend.seedGenesFile></knetminer.backend.seedGenesFile>
		<!-- knetminer.backend.seedGenesFile>${knetminer.configDir}/seed-genes-example.tsv</knetminer.backend.seedGenesFile -->		
		
		<!--
			Used to add the number of publications one wants visibly exported in the KnetMiner instance, default set at 20,
			edit this, or pass a mvn arg for it, to ammend it to a greater, or lesser, value.
		-->
		<knetminer.backend.defaultExportedPublicationCount>100</knetminer.backend.defaultExportedPublicationCount>

		
		<!-- 
			TODO: this appears to be the dataset version, Knetminer version should be ${project.version}.
			It requires renaming to avoid confusion. 
		-->
		<knetminer.version>51</knetminer.version>
		<knetminer.provider>Rothamsted Research</knetminer.provider>
		<!-- TODO: What's the difference between this and provider?! -->
		<knetminer.sourceOrganization>${knetminer.provider}</knetminer.sourceOrganization>
		<knetminer.knetSpaceHost>https://knetminer.com/beta/knetspace</knetminer.knetSpaceHost>

    <!-- google analytics (enabled by default with knetminer's own 2 ga_id's for api and ui). Setting this 
    to false will disable google analytics entirely. Alternatively, users can set true AND change the 2 
    ga_id's to redirect to their own google analytics tracking if they wish -->
		<knetminer.enableAnalytics>true</knetminer.enableAnalytics>
		<knetminer.gaIdUi>UA-88753233-1</knetminer.gaIdUi>
		<knetminer.gaIdApi>UA-88753233-2</knetminer.gaIdApi>

		<!-- In Maven, this is XPath-computed from basemap.xml and injected via mvn command line -->
		<knetminer.chromosomeList>1,2,3,4,5</knetminer.chromosomeList>
		
		<!--  true if you are providing a reference genome -->
		<knetminer.isReferenceGenomeProvided>true</knetminer.isReferenceGenomeProvided>

		<!-- 
			If your dataset config directory contains client/release_notes.html, its contents will be used as a value for
			the corresponding placeholder, taking priority over this variable. Hence, it will be ignored in such a case. 
		-->
		<knetminer.releaseNotesHtml><![CDATA[
			<h2>CHANGE ME!</h2>
			<p>This is just a <b>sample text</b> text, showing how specific release notes can be injected into the release.html template.</p>
			<p>Lorem ipsum dolor sit amet, etc etc</p>.
		]]></knetminer.releaseNotesHtml>

		
		<!-- 
			This is used by Genestack to customise the client/frontend layout with stuff like their own logo.
			When using the Docker runtime, this can be overridden by adding -Dknetminer.ui.embeddableLayout=true 
			to MAVEN_ARGS. The latter can be set via the \-\-env option of 'docker run', or see scripts like
			docker-run.sh. REMEMBER that, if you use this MAVEN_ARGS, it always requires -Pdocker when 
			running Docker (and -Pdocker,neo4j or even additional profiles (possibly in future), if you want
			the corresponding features enabled.  			 
		-->
		<knetminer.ui.embeddableLayout>false</knetminer.ui.embeddableLayout>
		
		<knetminer.api.httpPort>9090</knetminer.api.httpPort>
		<knetminer.api.webContext>ws</knetminer.api.webContext>
		<!-- Here, it is http://localhost:9090 -->
		<knetminer.api.rootUrl>http://localhost:${knetminer.api.httpPort}</knetminer.api.rootUrl>
		<!-- Here, it is http://localhost:9090/ws -->
		<knetminer.api.baseUrl>${knetminer.api.rootUrl}/${knetminer.api.webContext}</knetminer.api.baseUrl>
		<!-- Here, it is http://localhost:9090/ws/aratiny -->
		<knetminer.api.url>${knetminer.api.baseUrl}/${knetminer.dataSourceId}</knetminer.api.url>
		
		<!-- 
			This is injected into config.xml for the ws/ war. 
		  With empty value, the traditional Ondex traverser is picked. The alternative is
		  uk.ac.rothamsted.knetminer.backend.cypher.genesearch.CypherGraphTraverser (see neo4j profile in aratiny-ws/pom.xml),
		  which uses the new Neo4j-backed traverser.  
		 -->
		<knetminer.api.graphTraverserClass></knetminer.api.graphTraverserClass>

		<!-- There is a production version, which searches into state machine-generated files -->
		<knetminer.neo4j.configFile>${knetminer.configDir}/neo4j/config-test.xml</knetminer.neo4j.configFile>
				
		<neo4j.server.host>localhost</neo4j.server.host>
		<neo4j.server.boltPort>17690</neo4j.server.boltPort>
		<neo4j.server.httpPort>17490</neo4j.server.httpPort>
		
		<neo4j.server.boltUrl>bolt://${neo4j.server.host}:${neo4j.server.boltPort}</neo4j.server.boltUrl>
		<neo4j.server.user>neo4j</neo4j.server.user>
		<neo4j.server.password>test</neo4j.server.password>

		<neo4j.server.version>4.3.2</neo4j.server.version>

		<!-- See the description in aratiny-ws/src/test/resources/knetminer-dataset/config/data-source.xml -->
		<knetminer.backend.cypherDebugger.enabled>false</knetminer.backend.cypherDebugger.enabled>
			

		<!--
			Instead, these shouldn't need to be changed (apart from development purposes).
		-->
		
		<!-- 
			=========> WARNING! <=========
			
			Unless you need to repeat a version more times (eg, a group of modules produced by the same developer that have 
			their versions aligned), IT IS ABSOLUTELY FORBIDDEN to set a plug-in or dependency version in a property and use
			it later ONLY ONCE, or doing it for the sole purpose of inserting that dependency in multiple submodules. 
			MAVEN HAS PLUG-IN AND MODULE MANAGEMENT SECTIONS FOR THIS PURPOSE. USE MAVEN PROPERLY! 

			Violating this rule might condemn you to an afterlife in the Hell of Developers, where the damned are forced 
			to give IT support to biologists using Windows XP.      
		-->
			
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>

		<log4j.version>2.14.0</log4j.version>
		<lucene.version>6.6.0</lucene.version>
		<ondex.version>4.0RC2</ondex.version>
		<!-- This is required to override the parent's POM -->
		<jutils.version>10.0</jutils.version>
		<knetminer.backend.version>2.0RC</knetminer.backend.version>
	</properties>


	<reporting>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>taglist-maven-plugin</artifactId>
				<version>2.4</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>3.0.0-M1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>2.1.2</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<linkXref>true</linkXref>
					<sourceEncoding>ISO-8859-1</sourceEncoding>
					<minimumTokens>100</minimumTokens>
					<targetJdk>${java.version}</targetJdk>
				</configuration>
			</plugin>
						
			<!-- TODO: this needs to be updated. -->
			<!-- 
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<stylesheet>maven</stylesheet>
					<additionalparam>
						-link http://java.sun.com/javase/6/docs/api/
						-link
						http://www.oracle.com/technology/documentation/berkeley-db/je/java
						-link http://junit.sourceforge.net/javadoc/
						-link
						http://ondex.rothamsted.ac.uk/ondex/core/apidocs/
						-link
						http://ondex.rothamsted.ac.uk/ondex/modules/apidocs/
						-link
						http://ondex.rothamsted.ac.uk/ondex/ovtk2/apidocs/
					</additionalparam>
				</configuration>
			</plugin>
			-->
		</plugins>
	</reporting>

	<scm>
		<connection>scm:git:https://github.com/Rothamsted/knetminer</connection>
		<developerConnection>scm:git:https://github.com/Rothamsted/knetminer</developerConnection>
		<url>https://github.com/Rothamsted/knetminer</url>
	</scm>

	<ciManagement>
		<system>GitHub Actions</system>
		<url>https://github.com/Rothamsted/knetminer/actions</url>
	</ciManagement>
  
	<build>
		<pluginManagement>
			<plugins>
		  	<plugin>
		    	<artifactId>maven-clean-plugin</artifactId>
		    	<version>3.1.0</version>
		    </plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>2.1</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
						<showWarnings>true</showWarnings>
						<showDeprecation>true</showDeprecation>
						<maxmem>1024m</maxmem>
						<encoding>UTF-8</encoding>
						<fork>true</fork>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<version>3.3.1</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>exec-maven-plugin</artifactId>
					<version>1.6.0</version>
				</plugin>
			
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>3.0.0-M1</version>
					<configuration>
						<forkMode>always</forkMode>
						<forkedProcessTimeoutInSeconds>700</forkedProcessTimeoutInSeconds>
						<argLine>-Xms4G -Xmx4G</argLine>
						<failIfNoTests>false</failIfNoTests>
						<enableAssertions>true</enableAssertions>
						<redirectTestOutputToFile>false</redirectTestOutputToFile>
						<useFile>false</useFile>
						<!--testFailureIgnore>true</testFailureIgnore -->
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>2.1.2</version>
					<executions>
						<execution>
							<id>attach-sources</id>
							<phase>verify</phase>
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				
				<plugin>
				  <groupId>org.eclipse.jetty</groupId>
				  <artifactId>jetty-maven-plugin</artifactId>
			    <!-- version>9.4.34.v20201102</version -->
			    <version>10.0.1</version>
				  <executions>
				  	<execution>
				  		<id>start</id>
				  		<phase>pre-integration-test</phase>
				  		<goals><goal>start</goal></goals>
				  	</execution>
				  	<execution>
				  		<id>stop</id>
				  		<phase>post-integration-test</phase>
				  		<goals><goal>stop</goal></goals>
				  	</execution>
				  </executions>
				  <configuration>
				    <scanIntervalSeconds>10</scanIntervalSeconds>
		        <httpConnector>
		        	<!-- We might want a less common port, since this might be already used in our CI servers  -->
		          <port>8080</port>
		        </httpConnector>			    
				    <webApp>
				      <contextPath>/</contextPath>
							<allowDuplicateFragmentNames>true</allowDuplicateFragmentNames>
				    </webApp>
				    <stopPort>8081</stopPort>
				    <stopKey>araTinyJetty</stopKey>
				    <stopWait>10</stopWait>
				  </configuration>
				</plugin>

				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>properties-maven-plugin</artifactId>
					<version>1.0.0</version>
					<executions>
						<execution>
							<goals>
								<goal>set-system-properties</goal>
							</goals>
							<configuration>
								<properties>
									<property>
										<!-- WS scanning sometimes times out with the default (#551) -->
										<name>org.eclipse.jetty.annotations.maxWait</name>
										<value>600</value>
									</property>
								</properties>
							</configuration>
						</execution>
					</executions>
				</plugin>

			</plugins>		
		</pluginManagement>
		
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-clean-plugin</artifactId>
			</plugin>

		</plugins>
	</build>


	<profiles>
		
		<profile>
			<id>docker</id>
			<activation><activeByDefault>false</activeByDefault></activation>
			<properties>
				
				<!--
				
					These are common values for a Docker-dedicated build. WS building should be fine with these,
					while clients will have their own Maven settings to override these values.
					 
				-->
				<knetminer.datasetDir>/root/knetminer-dataset</knetminer.datasetDir>
				<knetminer.configDir>${knetminer.datasetDir}/config</knetminer.configDir>
				<knetminer.dataDir>${knetminer.datasetDir}/data</knetminer.dataDir>
				<knetminer.oxlFile>${knetminer.dataDir}/knowledge-network.oxl</knetminer.oxlFile>
								
				<knetminer.api.httpPort>8080</knetminer.api.httpPort>
				<!-- It's just /ws, so that our Tomcat can append the right prefix automatically -->
  			<knetminer.api.baseUrl>/${knetminer.api.webContext}</knetminer.api.baseUrl>
										
				<!-- This needs to be mapped to the right Neo4j server, via \-\-link or 'docker network' commands -->									
				<neo4j.server.host>neo4j</neo4j.server.host>
				<!-- Moreover, default Neo4j ports require proper mappings -->
				<neo4j.server.boltPort>7687</neo4j.server.boltPort>
				<!-- Not actually used, but just in case -->
				<neo4j.server.httpPort>7474</neo4j.server.httpPort>

				<knetminer.neo4j.configFile>${knetminer.configDir}/neo4j/config.xml</knetminer.neo4j.configFile>

			</properties>
				
		</profile>
	
	
		<profile>
			<!-- TODO: still needed?! -->
			<id>with-report</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>cobertura-maven-plugin</artifactId>
						<version>2.4</version>
						<configuration>
							<formats>
								<format>xml</format>
								<format>html</format>
							</formats>
						</configuration>
						<executions>
							<execution>
								<id>cobertura-copertura</id>
								<phase>package</phase>
								<goals>
									<goal>cobertura</goal>
								</goals>
							</execution>
							<execution>
								<id>cobertura-clean</id>
								<phase>clean</phase>
								<goals>
									<goal>clean</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<repositories>
	  <repository>
	  	<!-- This is needed to let Maven find the parent POM -->
			<id>knetminer-repo</id>
			<name>Knetminer Unified Repository</name>
			<url>https://knetminer.com/artifactory/repository/maven-public</url>
			<snapshots><enabled>true</enabled></snapshots>
			<releases><enabled>true</enabled></releases>
	  </repository>
	</repositories>
  
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>uk.ac.rothamsted.knetminer</groupId>
				<artifactId>server-datasource-ondexlocal</artifactId>
				<version>${project.version}</version>
				<exclusions>
					<!-- Removes the old log4j and requires a replacement with log4j-1.2-api (listed below) -->
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- The new backend, based on Neo4j -->
			<dependency>
				<groupId>uk.ac.rothamsted.knetminer.backend</groupId>
				<artifactId>cypher-client</artifactId>
				<version>${knetminer.backend.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>log4j-over-slf4j</artifactId>
					</exclusion>
				</exclusions>
			</dependency>		
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>3.1.0</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet.jsp</groupId>
				<artifactId>javax.servlet.jsp-api</artifactId>
				<version>2.3.1</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
				<version>1.2</version>
			</dependency>
			<dependency>
				<groupId>org.apache.taglibs</groupId>
				<artifactId>taglibs-standard-spec</artifactId>
				<version>1.2.5</version>
			</dependency>

			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>2.11.3</version>
			</dependency>

	    <dependency>
	      <groupId>net.sourceforge.ondex.core</groupId>
	      <artifactId>tools</artifactId>
	      <version>${ondex.version}</version>
	    </dependency>

			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>workflow-api</artifactId>
				<version>${ondex.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>memory</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>lucene</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>generic</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>oxl</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>cyjs_json</artifactId>
				<version>${ondex.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.lucene</groupId>
				<artifactId>lucene-analyzers-common</artifactId>
				<version>6.6.0</version>
			</dependency>

			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-api</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-core</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-jcl</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
			 	<groupId>org.apache.logging.log4j</groupId>
			 	<artifactId>log4j-slf4j-impl</artifactId>
				<version>${log4j.version}</version>
				<exclusions>
					<exclusion>
						<!-- We use our own -->
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- 
				The old log4j v1.2 can be replaced by this, but only if the dependant is written well-enough.
				(https://logging.apache.org/log4j/2.x/manual/migration.html)
			 -->
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-1.2-api</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-web</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>2.8.0</version>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.13.1</version>
			</dependency>

			<dependency>
				<groupId>org.json</groupId>
				<artifactId>json</artifactId>
				<version>20200518</version>
			</dependency>

			<dependency>
				<groupId>com.brsanthu</groupId>
				<artifactId>google-analytics-java</artifactId>
				<version>2.0.0</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>
			<!-- 
				This is used to setup CORS in the response. See:
				- https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
				- http://tuckey.org/urlrewrite/
				
				We use this web filter in src/main/webapp/WEB-INF 
			 -->
			<dependency>
				<groupId>org.tuckey</groupId>
				<artifactId>urlrewritefilter</artifactId>
				<version>4.0.4</version>
			</dependency>	
			
			<!-- Needed in Java >= 11 -->	  
			<dependency>
				<groupId>javax.annotation</groupId>
				<artifactId>javax.annotation-api</artifactId>
				<version>1.3.2</version>
			</dependency>
			
		</dependencies>
	</dependencyManagement>

</project>
<commit_msg>Releasing 5.0 [ci skip]<commit_after><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>

	<parent>
	  <groupId>uk.ac.rothamsted.knetminer</groupId>
	  <artifactId>knetminer-common</artifactId>
	  <version>2.0</version>
	</parent>  

	<artifactId>app-common</artifactId>
	<name>app-common - KnetMiner App top/common POM container</name>
	<version>5.0.1-SNAPSHOT</version>
	<description>
		KnetMiner is a platform for fast candidate gene discovery using data mining techniques.
		See http://github.com/Rothamsted/knetminer/wiki for technical details.
	</description>
	<url>http://knetminer.org/</url>
	<packaging>pom</packaging>

	<organization>
		<name>Rothamsted Research</name>
		<url>http://www.rothamsted.ac.uk/</url>
	</organization>

	<licenses>
		<license>
			<name>GNU GPL</name>
			<url>http://www.gnu.org/licenses/gpl.html</url>
		</license>
	</licenses>

	<modules>
    <module>client-base</module>
    <module>server-base</module>
    <module>server-datasource-api</module>
    <module>server-datasource-ondexlocal</module>
    <module>server-ondex</module>
    <module>aratiny</module>
	</modules>

	<properties>
		
		<!-- 
		  Several of these properties can be overriden by instance-specific Maven profiles.
		  Here, we give values suitable for maven tests (eg, in aratiny).
		  
		  See https://github.com/Rothamsted/knetminer/wiki/3.-Deploying-KnetMiner-with-Docker
		 -->
		<knetminer.datasetDir>${project.build.testOutputDirectory}/knetminer-dataset</knetminer.datasetDir>
		<knetminer.configDir>${knetminer.datasetDir}/config</knetminer.configDir>
		<knetminer.dataDir>${knetminer.datasetDir}/data</knetminer.dataDir>

		<!-- This is where the file has to be found BY TOMCAT, NOT NECESSARILY where it is during builds -->
		<knetminer.configFile>${knetminer.configDir}/data-source.xml</knetminer.configFile>		

		<!--
			In most cases, probably you'll be fine with the overriding provided below, in the 'docker' profile.
			For aratiny, we need this non-common value since it's difficult to rename a downloaded test file. 
		-->
		<knetminer.oxlFile>${project.build.directory}/dependency/poaceae-sample.oxl</knetminer.oxlFile>
		 
		<!--  Change these variables as appropriate or use maven args to provide them ! -->
		<knetminer.dataSourceId>aratiny</knetminer.dataSourceId>
		<knetminer.specieName>Arabidopsis Thaliana</knetminer.specieName>
		<knetminer.appDescription>Knetminer instance about tiny arabidopsis data set</knetminer.appDescription>
		<knetminer.appKeywords>arabidopsis, a.thaliana, knetminer, quickstart, demo, docker</knetminer.appKeywords>
		
		<!-- 3702=Ara,4565=Wheat,4577=Maize -->
		<knetminer.specieTaxId>3702</knetminer.specieTaxId>
		
		<!-- 
			If this is non-empty, the genes used to seed the initial semantic motif graph traverser are taken from this
			file. Its format is very simple, see the example mentioned here. This variable must be defined for
			things to work, the empty default doesn't trigger this behaviour and causes the seed to be computed from
			knetminer.specieTaxId. As usually, this can be redefined in a setting file, inside the docker profile.
		-->
		<knetminer.backend.seedGenesFile></knetminer.backend.seedGenesFile>
		<!-- knetminer.backend.seedGenesFile>${knetminer.configDir}/seed-genes-example.tsv</knetminer.backend.seedGenesFile -->		
		
		<!--
			Used to add the number of publications one wants visibly exported in the KnetMiner instance, default set at 20,
			edit this, or pass a mvn arg for it, to ammend it to a greater, or lesser, value.
		-->
		<knetminer.backend.defaultExportedPublicationCount>100</knetminer.backend.defaultExportedPublicationCount>

		
		<!-- 
			TODO: this appears to be the dataset version, Knetminer version should be ${project.version}.
			It requires renaming to avoid confusion. 
		-->
		<knetminer.version>51</knetminer.version>
		<knetminer.provider>Rothamsted Research</knetminer.provider>
		<!-- TODO: What's the difference between this and provider?! -->
		<knetminer.sourceOrganization>${knetminer.provider}</knetminer.sourceOrganization>
		<knetminer.knetSpaceHost>https://knetminer.com/beta/knetspace</knetminer.knetSpaceHost>

    <!-- google analytics (enabled by default with knetminer's own 2 ga_id's for api and ui). Setting this 
    to false will disable google analytics entirely. Alternatively, users can set true AND change the 2 
    ga_id's to redirect to their own google analytics tracking if they wish -->
		<knetminer.enableAnalytics>true</knetminer.enableAnalytics>
		<knetminer.gaIdUi>UA-88753233-1</knetminer.gaIdUi>
		<knetminer.gaIdApi>UA-88753233-2</knetminer.gaIdApi>

		<!-- In Maven, this is XPath-computed from basemap.xml and injected via mvn command line -->
		<knetminer.chromosomeList>1,2,3,4,5</knetminer.chromosomeList>
		
		<!--  true if you are providing a reference genome -->
		<knetminer.isReferenceGenomeProvided>true</knetminer.isReferenceGenomeProvided>

		<!-- 
			If your dataset config directory contains client/release_notes.html, its contents will be used as a value for
			the corresponding placeholder, taking priority over this variable. Hence, it will be ignored in such a case. 
		-->
		<knetminer.releaseNotesHtml><![CDATA[
			<h2>CHANGE ME!</h2>
			<p>This is just a <b>sample text</b> text, showing how specific release notes can be injected into the release.html template.</p>
			<p>Lorem ipsum dolor sit amet, etc etc</p>.
		]]></knetminer.releaseNotesHtml>

		
		<!-- 
			This is used by Genestack to customise the client/frontend layout with stuff like their own logo.
			When using the Docker runtime, this can be overridden by adding -Dknetminer.ui.embeddableLayout=true 
			to MAVEN_ARGS. The latter can be set via the \-\-env option of 'docker run', or see scripts like
			docker-run.sh. REMEMBER that, if you use this MAVEN_ARGS, it always requires -Pdocker when 
			running Docker (and -Pdocker,neo4j or even additional profiles (possibly in future), if you want
			the corresponding features enabled.  			 
		-->
		<knetminer.ui.embeddableLayout>false</knetminer.ui.embeddableLayout>
		
		<knetminer.api.httpPort>9090</knetminer.api.httpPort>
		<knetminer.api.webContext>ws</knetminer.api.webContext>
		<!-- Here, it is http://localhost:9090 -->
		<knetminer.api.rootUrl>http://localhost:${knetminer.api.httpPort}</knetminer.api.rootUrl>
		<!-- Here, it is http://localhost:9090/ws -->
		<knetminer.api.baseUrl>${knetminer.api.rootUrl}/${knetminer.api.webContext}</knetminer.api.baseUrl>
		<!-- Here, it is http://localhost:9090/ws/aratiny -->
		<knetminer.api.url>${knetminer.api.baseUrl}/${knetminer.dataSourceId}</knetminer.api.url>
		
		<!-- 
			This is injected into config.xml for the ws/ war. 
		  With empty value, the traditional Ondex traverser is picked. The alternative is
		  uk.ac.rothamsted.knetminer.backend.cypher.genesearch.CypherGraphTraverser (see neo4j profile in aratiny-ws/pom.xml),
		  which uses the new Neo4j-backed traverser.  
		 -->
		<knetminer.api.graphTraverserClass></knetminer.api.graphTraverserClass>

		<!-- There is a production version, which searches into state machine-generated files -->
		<knetminer.neo4j.configFile>${knetminer.configDir}/neo4j/config-test.xml</knetminer.neo4j.configFile>
				
		<neo4j.server.host>localhost</neo4j.server.host>
		<neo4j.server.boltPort>17690</neo4j.server.boltPort>
		<neo4j.server.httpPort>17490</neo4j.server.httpPort>
		
		<neo4j.server.boltUrl>bolt://${neo4j.server.host}:${neo4j.server.boltPort}</neo4j.server.boltUrl>
		<neo4j.server.user>neo4j</neo4j.server.user>
		<neo4j.server.password><PASSWORD></neo4j.server.password>

		<neo4j.server.version>4.3.2</neo4j.server.version>

		<!-- See the description in aratiny-ws/src/test/resources/knetminer-dataset/config/data-source.xml -->
		<knetminer.backend.cypherDebugger.enabled>false</knetminer.backend.cypherDebugger.enabled>
			

		<!--
			Instead, these shouldn't need to be changed (apart from development purposes).
		-->
		
		<!-- 
			=========> WARNING! <=========
			
			Unless you need to repeat a version more times (eg, a group of modules produced by the same developer that have 
			their versions aligned), IT IS ABSOLUTELY FORBIDDEN to set a plug-in or dependency version in a property and use
			it later ONLY ONCE, or doing it for the sole purpose of inserting that dependency in multiple submodules. 
			MAVEN HAS PLUG-IN AND MODULE MANAGEMENT SECTIONS FOR THIS PURPOSE. USE MAVEN PROPERLY! 

			Violating this rule might condemn you to an afterlife in the Hell of Developers, where the damned are forced 
			to give IT support to biologists who are still using Windows XP.      
		-->
			
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>

		<log4j.version>2.14.0</log4j.version>
		<lucene.version>6.6.0</lucene.version>
		<ondex.version>5.0</ondex.version>
		<!-- This is required to override the parent's POM -->
		<jutils.version>10.0</jutils.version>
		<knetminer.backend.version>2.0</knetminer.backend.version>
	</properties>


	<reporting>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>taglist-maven-plugin</artifactId>
				<version>2.4</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>3.0.0-M1</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-project-info-reports-plugin</artifactId>
				<version>2.1.2</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-pmd-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<linkXref>true</linkXref>
					<sourceEncoding>ISO-8859-1</sourceEncoding>
					<minimumTokens>100</minimumTokens>
					<targetJdk>${java.version}</targetJdk>
				</configuration>
			</plugin>
						
			<!-- TODO: this needs to be updated. -->
			<!-- 
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<stylesheet>maven</stylesheet>
					<additionalparam>
						-link http://java.sun.com/javase/6/docs/api/
						-link
						http://www.oracle.com/technology/documentation/berkeley-db/je/java
						-link http://junit.sourceforge.net/javadoc/
						-link
						http://ondex.rothamsted.ac.uk/ondex/core/apidocs/
						-link
						http://ondex.rothamsted.ac.uk/ondex/modules/apidocs/
						-link
						http://ondex.rothamsted.ac.uk/ondex/ovtk2/apidocs/
					</additionalparam>
				</configuration>
			</plugin>
			-->
		</plugins>
	</reporting>

	<scm>
		<connection>scm:git:https://github.com/Rothamsted/knetminer</connection>
		<developerConnection>scm:git:https://github.com/Rothamsted/knetminer</developerConnection>
		<url>https://github.com/Rothamsted/knetminer</url>
	</scm>

	<ciManagement>
		<system>GitHub Actions</system>
		<url>https://github.com/Rothamsted/knetminer/actions</url>
	</ciManagement>
  
	<build>
		<pluginManagement>
			<plugins>
		  	<plugin>
		    	<artifactId>maven-clean-plugin</artifactId>
		    	<version>3.1.0</version>
		    </plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>2.1</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
						<showWarnings>true</showWarnings>
						<showDeprecation>true</showDeprecation>
						<maxmem>1024m</maxmem>
						<encoding>UTF-8</encoding>
						<fork>true</fork>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<version>3.3.1</version>
				</plugin>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>exec-maven-plugin</artifactId>
					<version>1.6.0</version>
				</plugin>
			
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>3.0.0-M1</version>
					<configuration>
						<forkMode>always</forkMode>
						<forkedProcessTimeoutInSeconds>700</forkedProcessTimeoutInSeconds>
						<argLine>-Xms4G -Xmx4G</argLine>
						<failIfNoTests>false</failIfNoTests>
						<enableAssertions>true</enableAssertions>
						<redirectTestOutputToFile>false</redirectTestOutputToFile>
						<useFile>false</useFile>
						<!--testFailureIgnore>true</testFailureIgnore -->
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>2.1.2</version>
					<executions>
						<execution>
							<id>attach-sources</id>
							<phase>verify</phase>
							<goals>
								<goal>jar-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				
				<plugin>
				  <groupId>org.eclipse.jetty</groupId>
				  <artifactId>jetty-maven-plugin</artifactId>
			    <!-- version>9.4.34.v20201102</version -->
			    <version>10.0.1</version>
				  <executions>
				  	<execution>
				  		<id>start</id>
				  		<phase>pre-integration-test</phase>
				  		<goals><goal>start</goal></goals>
				  	</execution>
				  	<execution>
				  		<id>stop</id>
				  		<phase>post-integration-test</phase>
				  		<goals><goal>stop</goal></goals>
				  	</execution>
				  </executions>
				  <configuration>
				    <scanIntervalSeconds>10</scanIntervalSeconds>
		        <httpConnector>
		        	<!-- We might want a less common port, since this might be already used in our CI servers  -->
		          <port>8080</port>
		        </httpConnector>			    
				    <webApp>
				      <contextPath>/</contextPath>
							<allowDuplicateFragmentNames>true</allowDuplicateFragmentNames>
				    </webApp>
				    <stopPort>8081</stopPort>
				    <stopKey>araTinyJetty</stopKey>
				    <stopWait>10</stopWait>
				  </configuration>
				</plugin>

				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>properties-maven-plugin</artifactId>
					<version>1.0.0</version>
					<executions>
						<execution>
							<goals>
								<goal>set-system-properties</goal>
							</goals>
							<configuration>
								<properties>
									<property>
										<!-- WS scanning sometimes times out with the default (#551) -->
										<name>org.eclipse.jetty.annotations.maxWait</name>
										<value>600</value>
									</property>
								</properties>
							</configuration>
						</execution>
					</executions>
				</plugin>

			</plugins>		
		</pluginManagement>
		
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-clean-plugin</artifactId>
			</plugin>

		</plugins>
	</build>


	<profiles>
		
		<profile>
			<id>docker</id>
			<activation><activeByDefault>false</activeByDefault></activation>
			<properties>
				
				<!--
				
					These are common values for a Docker-dedicated build. WS building should be fine with these,
					while clients will have their own Maven settings to override these values.
					 
				-->
				<knetminer.datasetDir>/root/knetminer-dataset</knetminer.datasetDir>
				<knetminer.configDir>${knetminer.datasetDir}/config</knetminer.configDir>
				<knetminer.dataDir>${knetminer.datasetDir}/data</knetminer.dataDir>
				<knetminer.oxlFile>${knetminer.dataDir}/knowledge-network.oxl</knetminer.oxlFile>
								
				<knetminer.api.httpPort>8080</knetminer.api.httpPort>
				<!-- It's just /ws, so that our Tomcat can append the right prefix automatically -->
  			<knetminer.api.baseUrl>/${knetminer.api.webContext}</knetminer.api.baseUrl>
										
				<!-- This needs to be mapped to the right Neo4j server, via \-\-link or 'docker network' commands -->									
				<neo4j.server.host>neo4j</neo4j.server.host>
				<!-- Moreover, default Neo4j ports require proper mappings -->
				<neo4j.server.boltPort>7687</neo4j.server.boltPort>
				<!-- Not actually used, but just in case -->
				<neo4j.server.httpPort>7474</neo4j.server.httpPort>

				<knetminer.neo4j.configFile>${knetminer.configDir}/neo4j/config.xml</knetminer.neo4j.configFile>

			</properties>
				
		</profile>
	
	
		<profile>
			<!-- TODO: still needed?! -->
			<id>with-report</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>cobertura-maven-plugin</artifactId>
						<version>2.4</version>
						<configuration>
							<formats>
								<format>xml</format>
								<format>html</format>
							</formats>
						</configuration>
						<executions>
							<execution>
								<id>cobertura-copertura</id>
								<phase>package</phase>
								<goals>
									<goal>cobertura</goal>
								</goals>
							</execution>
							<execution>
								<id>cobertura-clean</id>
								<phase>clean</phase>
								<goals>
									<goal>clean</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<repositories>
	  <repository>
	  	<!-- This is needed to let Maven find the parent POM -->
			<id>knetminer-repo</id>
			<name>Knetminer Unified Repository</name>
			<url>https://knetminer.com/artifactory/repository/maven-public</url>
			<snapshots><enabled>true</enabled></snapshots>
			<releases><enabled>true</enabled></releases>
	  </repository>
	</repositories>
  
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>uk.ac.rothamsted.knetminer</groupId>
				<artifactId>server-datasource-ondexlocal</artifactId>
				<version>${project.version}</version>
				<exclusions>
					<!-- Removes the old log4j and requires a replacement with log4j-1.2-api (listed below) -->
					<exclusion>
						<groupId>log4j</groupId>
						<artifactId>log4j</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- The new backend, based on Neo4j -->
			<dependency>
				<groupId>uk.ac.rothamsted.knetminer.backend</groupId>
				<artifactId>cypher-client</artifactId>
				<version>${knetminer.backend.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>log4j-over-slf4j</artifactId>
					</exclusion>
				</exclusions>
			</dependency>		
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>3.1.0</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet.jsp</groupId>
				<artifactId>javax.servlet.jsp-api</artifactId>
				<version>2.3.1</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
				<version>1.2</version>
			</dependency>
			<dependency>
				<groupId>org.apache.taglibs</groupId>
				<artifactId>taglibs-standard-spec</artifactId>
				<version>1.2.5</version>
			</dependency>

			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>2.11.3</version>
			</dependency>

	    <dependency>
	      <groupId>net.sourceforge.ondex.core</groupId>
	      <artifactId>tools</artifactId>
	      <version>${ondex.version}</version>
	    </dependency>

			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>workflow-api</artifactId>
				<version>${ondex.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-log4j12</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>memory</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.core</groupId>
				<artifactId>lucene</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>generic</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>oxl</artifactId>
				<version>${ondex.version}</version>
			</dependency>
			<dependency>
				<groupId>net.sourceforge.ondex.modules</groupId>
				<artifactId>cyjs_json</artifactId>
				<version>${ondex.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.lucene</groupId>
				<artifactId>lucene-analyzers-common</artifactId>
				<version>6.6.0</version>
			</dependency>

			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-api</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-core</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-jcl</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
			 	<groupId>org.apache.logging.log4j</groupId>
			 	<artifactId>log4j-slf4j-impl</artifactId>
				<version>${log4j.version}</version>
				<exclusions>
					<exclusion>
						<!-- We use our own -->
						<groupId>org.slf4j</groupId>
						<artifactId>slf4j-api</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
			<!-- 
				The old log4j v1.2 can be replaced by this, but only if the dependant is written well-enough.
				(https://logging.apache.org/log4j/2.x/manual/migration.html)
			 -->
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-1.2-api</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-web</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>2.8.0</version>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.13.1</version>
			</dependency>

			<dependency>
				<groupId>org.json</groupId>
				<artifactId>json</artifactId>
				<version>20200518</version>
			</dependency>

			<dependency>
				<groupId>com.brsanthu</groupId>
				<artifactId>google-analytics-java</artifactId>
				<version>2.0.0</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>
			<!-- 
				This is used to setup CORS in the response. See:
				- https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
				- http://tuckey.org/urlrewrite/
				
				We use this web filter in src/main/webapp/WEB-INF 
			 -->
			<dependency>
				<groupId>org.tuckey</groupId>
				<artifactId>urlrewritefilter</artifactId>
				<version>4.0.4</version>
			</dependency>	
			
			<!-- Needed in Java >= 11 -->	  
			<dependency>
				<groupId>javax.annotation</groupId>
				<artifactId>javax.annotation-api</artifactId>
				<version>1.3.2</version>
			</dependency>
			
		</dependencies>
	</dependencyManagement>

</project>

{'fraction_non_alphanumeric': 0.14421079408148557, 'fraction_numerical': 0.014775087972188069, 'mean_word_length': 3.2976223011751844, 'pattern_counts': {'":': 0, '<': 1660, '<?xml version=': 0, '>': 1662, 'https://': 17, 'lorem ipsum': 0, 'www.': 8, 'xml': 22}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5635130', 'n_tokens_mistral': 20571, 'n_tokens_neox': 15581, 'n_words': 2670}