<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <name>Apache Jena</name>
  <groupId>org.apache.jena</groupId>
  <artifactId>jena</artifactId>
  <packaging>pom</packaging>
  <url>https://jena.apache.org/</url>
  <version>4.10.0</version>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>30</version>
  </parent>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <organization>
    <name>The Apache Software Foundation</name>
    <url>https://www.apache.org/</url>
  </organization>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/jena.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/jena.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf/jena.git</url>
    <tag>jena-4.10.0</tag>
  </scm>

   <properties>
     <!-- Build -->
    <java.version>11</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputTimestamp>2023-10-24T11:09:25Z</project.build.outputTimestamp>

    <!-- Testing -->
    <ver.junit>4.13.2</ver.junit>  
    <ver.mockito>5.6.0</ver.mockito>
    <ver.awaitility>4.2.0</ver.awaitility>
    <ver.contract.tests>0.2.0</ver.contract.tests>

    <!-- Dependencies -->
    <ver.slf4j>1.7.36</ver.slf4j>
    <ver.log4j2>2.21.0</ver.log4j2>

    <ver.lucene>9.7.0</ver.lucene>

    <ver.jetty>10.0.17</ver.jetty>
    <ver.shiro>1.12.0</ver.shiro>

    <ver.protobuf>3.24.3</ver.protobuf>
    <ver.libthrift>0.19.0</ver.libthrift>

    <!-- JSON-LD 1.1 -->
    <ver.titanium-json-ld>1.3.2</ver.titanium-json-ld>
    <ver.jakarta.json>2.0.1</ver.jakarta.json>

    <!-- JSON-LD 1.0 -->
    <!-- jsonld-java depends on depends on Jackson core
         and Jackson databind. databind has had a few CVEs
         so we exclude from jsonldjava and select the version
         ourselves.
         When upgrading jsonld, consult jsonld-java's
         POM for the correct dependency versions
         and use that or later.
    -->
    <ver.jsonldjava>0.13.4</ver.jsonldjava>
    <ver.jackson>2.15.3</ver.jackson>
    <ver.httpclient>4.5.14</ver.httpclient>
    <ver.httpcore>4.4.16</ver.httpcore>

    <ver.caffeine>3.1.8</ver.caffeine>
    <!-- Most of Jena uses other libraries for equivalent functionality. -->
    <ver.guava>32.1.3-jre</ver.guava>

    <ver.gson>2.10.1</ver.gson>
    <ver.commons-io>2.14.0</ver.commons-io>
    <ver.commons-cli>1.5.0</ver.commons-cli>
    <ver.commons-lang3>3.13.0</ver.commons-lang3>
    <ver.commons-rdf>0.5.0</ver.commons-rdf>
    <ver.commons-csv>1.10.0</ver.commons-csv>
    <ver.commons-codec>1.16.0</ver.commons-codec>
    <ver.commons-compress>1.24.0</ver.commons-compress>
    <ver.commons-collections>4.4</ver.commons-collections>
    <ver.dexxcollection>0.7</ver.dexxcollection>
    <ver.micrometer>1.11.4</ver.micrometer>
    <ver.roaringbitmap>1.0.0</ver.roaringbitmap>

    <!-- For testing, not shipped -->
    <ver.graalvm>22.3.4</ver.graalvm>
    <ver.jython>2.7.3</ver.jython>
    <ver.org.openjdk.jmh>1.37</ver.org.openjdk.jmh>

    <!--- GeoSPARQL related -->
    <ver.jcommander>1.82</ver.jcommander>
    <ver.sis>1.4</ver.sis>
    <ver.jts>1.19.0</ver.jts>

    <!-- 
         A default value so it is defined everywhere (albeit with duplicates)
         Modulenames can't have "-" so tricky to use ${project.*} variables
         <automatic.module.name>org.apache.jena</automatic.module.name>
    -->

   </properties>

   <issueManagement>
     <system>JIRA</system>
     <url>https://issues.apache.org/jira/browse/JENA</url>
   </issueManagement>

   <mailingLists>
     <mailingList>
       <name>Jena Users Mailing List</name>
       <post>users@jena.apache.org</post>
       <subscribe>users-subscribe@jena.apache.org</subscribe>
       <unsubscribe>users-unsubscribe@jena.apache.org</unsubscribe>
       <archive>https://lists.apache.org/list.html?users@jena.apache.org</archive>
       <otherArchives>
         <otherArchive>https://mail-archives.apache.org/mod_mbox/jena-users/</otherArchive>
         <otherArchive>https://www.mail-archive.com/users@jena.apache.org/</otherArchive>
         <otherArchive>https://markmail.org/search/?q=list%3Aorg.apache.jena.users</otherArchive>
       </otherArchives>
     </mailingList>
     <mailingList>
       <name>Jena Developers Mailing List</name>
       <post>dev@jena.apache.org</post>
       <subscribe>dev-subscribe@jena.apache.org</subscribe>
       <unsubscribe>dev-unsubscribe@jena.apache.org</unsubscribe>
       <archive>https://lists.apache.org/list.html?dev@jena.apache.org</archive>
       <otherArchives>
         <otherArchive>https://lists.apache.org/mod_mbox/jena-dev/</otherArchive>
         <otherArchive>https://www.mail-archive.com/dev@jena.apache.org/</otherArchive>
         <otherArchive>https://markmail.org/search/?q=list%3Aorg.apache.jena.dev</otherArchive>
       </otherArchives>
     </mailingList>
     <mailingList>
       <name>Jena Commits</name>
       <post>commits@jena.apache.org</post>
       <subscribe>commits-subscribe@jena.apache.org</subscribe>
       <unsubscribe>commits-unsubscribe@jena.apache.org</unsubscribe>
       <archive>https://lists.apache.org/list.html?commits@jena.apache.org</archive>
       <otherArchives>
         <otherArchive>https://mail-archives.apache.org/mod_mbox/jena-commits/</otherArchive>
       </otherArchives>
     </mailingList>
   </mailingLists>

   <profiles>
     <profile>
       <!--
           This is the dev profile, typically used locally with 
           "mvn clean install -Pdev".
           It builds the modules shipped in apache-jena binaries
           but does not build these binaries.
           This profile does not build javadoc.
       -->
       <id>dev</id>
       <modules>
         <module>jena-iri</module>
         <module>jena-base</module>
         
         <module>jena-core</module>
         <module>jena-arq</module>
         <module>jena-shacl</module>
         <module>jena-shex</module>
         <module>jena-rdfpatch</module>
         <module>jena-rdfconnection</module>
         <module>jena-db</module>
         <module>jena-tdb1</module>
         <module>jena-tdb2</module>
         
         <module>apache-jena-libs</module>

         <module>jena-text</module>
         
         <module>jena-cmds</module>
         <module>jena-geosparql</module>
         <module>jena-fuseki2</module>

         <module>jena-integration-tests</module>

         <module>jena-benchmarks</module>
         <!-- Binary distribution -->
         <!-- <module>apache-jena</module> -->

       </modules>

       <build>
         <plugins>
           <!-- For -Pdev :: don't create javadoc. -->
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-javadoc-plugin</artifactId>
             <configuration>
               <skip>true</skip>
             </configuration>
           </plugin>
         </plugins>
       </build>

     </profile>

     <profile>
       <!--
           This is the complete profile, it builds everything including slow
           building modules and the distribution packages.
       -->
       <id>complete</id>
       <activation>
         <activeByDefault>true</activeByDefault>
         <property>
           <name>profile.complete</name>
           <value>true</value>
         </property>
       </activation>
       <modules>
         <!-- Basic modules -->
         <module>jena-iri</module>
         <module>jena-base</module>

         <!-- Main modules -->
         <module>jena-core</module>
         <module>jena-arq</module>
         <module>jena-shacl</module>
         <module>jena-shex</module>
         <module>jena-rdfpatch</module>
         <module>jena-rdfconnection</module>
         <module>jena-db</module>
         <module>jena-tdb1</module>
         <module>jena-tdb2</module>
         <module>apache-jena-libs</module>

         <module>jena-text</module>

         <module>jena-cmds</module>
         <module>jena-fuseki2</module>

         <module>jena-geosparql</module>
         <module>jena-fuseki2/jena-fuseki-geosparql</module>
         
         <!--
             Tests of artifacts that require additional 
             modules built later in the build process.
             For example, using Fuseki as a test server to
             test remote client APIs.
         -->
         <module>jena-integration-tests</module>

         <module>jena-benchmarks</module>
         
         <!-- Binary distribution -->
         <module>apache-jena</module>

         <!-- Other -->
         <module>jena-permissions</module>
         <module>jena-extras</module>
         <module>jena-examples</module>

         <!-- Slow building modules -->
         <module>jena-jdbc</module>

       </modules>
     </profile>

   </profiles>

   <dependencyManagement>
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${ver.junit}</version>
         <scope>test</scope>
       </dependency>

       <dependency>
         <groupId>commons-codec</groupId>
         <artifactId>commons-codec</artifactId>
         <version>${ver.commons-codec}</version>
       </dependency>
       
       <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
         <version>${ver.commons-io}</version>
       </dependency>
       
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
         <version>${ver.commons-compress}</version>
         <exclusions>
           <exclusion>
             <!-- This is scope=provided but interferes with log4j JENA-2137 -->
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <dependency>
         <groupId>com.fasterxml.jackson</groupId>
         <artifactId>jackson-bom</artifactId>
         <version>${ver.jackson}</version>
         <type>pom</type>
         <scope>import</scope>
       </dependency>
       
       <!-- Protobuf only, not gRPC -->
       <dependency>
         <groupId>com.google.protobuf</groupId>
         <artifactId>protobuf-java</artifactId>
         <version>${ver.protobuf}</version>
       </dependency>
       
       <dependency>
         <groupId>org.apache.thrift</groupId>
         <artifactId>libthrift</artifactId>
         <version>${ver.libthrift}</version>
         <exclusions>
           <exclusion>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.slf4j</groupId>
             <artifactId>*</artifactId>
           </exclusion>

           <!-- 
                Jena does not use the RPC capabilities of Thrift,
                only the binary data format.
           -->
           <exclusion>
             <groupId>org.apache.httpcomponents.client5</groupId>
             <artifactId>*</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.apache.httpcomponents.core5</groupId>
             <artifactId>*</artifactId>
           </exclusion>
           <exclusion>
             <groupId>jakarta.servlet</groupId>
             <artifactId>*</artifactId>
           </exclusion>
           <exclusion>
             <groupId>jakarta.annotation</groupId>
             <artifactId>*</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-csv</artifactId>
         <version>${ver.commons-csv}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>${ver.commons-lang3}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-collections4</artifactId>
         <version>${ver.commons-collections}</version>
       </dependency>

       <dependency>
         <groupId>com.github.ben-manes.caffeine</groupId>
         <artifactId>caffeine</artifactId>
         <version>${ver.caffeine}</version>
       </dependency>

       <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>${ver.guava}</version>
         <exclusions>
           <!-- These sometimes cause a convergence error with Caffeine -->
           <exclusion>
             <groupId>org.checkerframework</groupId>
             <artifactId>checker-qual</artifactId>
           </exclusion>
           <exclusion>
             <groupId>com.google.errorprone</groupId>
             <artifactId>error_prone_annotations</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <!-- supports persistent data structures -->
       <dependency>
         <groupId>com.github.andrewoma.dexx</groupId>
         <artifactId>collection</artifactId>
         <version>${ver.dexxcollection}</version>
       </dependency>
       
       <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
         <version>${ver.gson}</version>
       </dependency>    
       
       <!-- jsonld-java for JSON-LD 1.0 -->
       <dependency>
         <groupId>com.github.jsonld-java</groupId>
         <artifactId>jsonld-java</artifactId>
         <version>${ver.jsonldjava}</version>

         <exclusions>
           <exclusion>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
           </exclusion>
           <exclusion>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.slf4j</groupId>
             <artifactId>*</artifactId>
           </exclusion>

           <!-- Exclude so we use our choice of versions -->
           <exclusion>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient-cache</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient-osgi</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpcore-osgi</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <!-- Control version of Apache HttpClient components -->
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient-cache</artifactId>
         <version>${ver.httpclient}</version>
         <exclusions>
           <!-- Replace with slf4j adapter -->
           <exclusion>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
           </exclusion>
           <!-- JENA 2137: scope=provided and the enforcer plugin -->
           <exclusion>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient</artifactId>
         <version>${ver.httpclient}</version>
         <exclusions>
           <exclusion>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
           </exclusion>
           <!-- JENA 2137: scope=provided and the enforcer plugin -->
           <exclusion>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpcore</artifactId>
         <version>${ver.httpcore}</version>
         <exclusions>
           <exclusion>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
           </exclusion>
         </exclusions>
       </dependency>
       
       <!-- JSON-LD 1.1 read support -->
       <!-- Titanium JSON-LD -->
       <dependency>
         <!-- Apache License -->
         <groupId>com.apicatalog</groupId>
         <artifactId>titanium-json-ld</artifactId>
         <version>${ver.titanium-json-ld}</version>
       </dependency>
       <!-- Eclipse Public License 2.0 (category-B) -->
       <!--
           Not required if using org.glassfish:jakarta.json because 
           that contains a copy. Less shading warnings if not used
           in jena-arq.
       -->
       <dependency>
         <groupId>jakarta.json</groupId>
         <artifactId>jakarta.json-api</artifactId>
         <version>${ver.jakarta.json}</version>
       </dependency>

       <!-- Eclipse Public License 2.0 (category-B) -->
       <dependency>
         <groupId>org.glassfish</groupId>
         <artifactId>jakarta.json</artifactId>
         <version>${ver.jakarta.json}</version>
       </dependency>
       <!-- End JSON-LD 1.1 read support -->

       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-bom</artifactId>
         <version>${ver.jetty}</version>
         <scope>import</scope>
         <type>pom</type>
       </dependency>
       
       <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-core</artifactId>
         <version>${ver.shiro}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-web</artifactId>
         <version>${ver.shiro}</version>
         <!-- JENA-2137 : Dependency convergence -->
         <exclusions>
           <exclusion>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <!-- Lucene dependencies -->
       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-core</artifactId>
         <version>${ver.lucene}</version>
         <type>jar</type>
       </dependency>

       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-analysis-common</artifactId>
         <version>${ver.lucene}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-queryparser</artifactId>
         <version>${ver.lucene}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-highlighter</artifactId>
         <version>${ver.lucene}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-backward-codecs</artifactId>
         <version>${ver.lucene}</version>
       </dependency>

       <!-- Logging -->
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${ver.slf4j}</version>
       </dependency>

       <!-- 
            java.util.logging (JUL)
            Do not use jul-to-slf4j and slf4j-jdk14 together.
       -->
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-jdk14</artifactId>
         <version>${ver.slf4j}</version>
       </dependency>

       <!-- Log4j2 -->
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-bom</artifactId>
         <version>${ver.log4j2}</version>
         <scope>import</scope>
         <type>pom</type>
       </dependency>

       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-slf4j-impl</artifactId>
         <version>${ver.log4j2}</version>
         <optional>true</optional>
       </dependency>

       <!-- JENA-2137
            log4j depends on an old version of org.osgi.core (the minimum supported).
            Other dependencies may pull in org.osgi (even if scope=provided)
            and cause an enforcer error.
       -->
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-api</artifactId>
         <version>${ver.log4j2}</version>
         <optional>true</optional>
         <exclusions>
           <exclusion>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>
       <dependency>
         <groupId>org.apache.logging.log4j</groupId>
         <artifactId>log4j-core</artifactId>
         <version>${ver.log4j2}</version>
         <optional>true</optional>
         <exclusions>
           <exclusion>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <!-- And intercept any uses of Jakarta Commons Logging 
            e.g. Apache Common HTTP client. 
       -->

       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${ver.slf4j}</version>
       </dependency>

       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jul-to-slf4j</artifactId>
         <version>${ver.slf4j}</version>
       </dependency>

       <dependency>
         <groupId>commons-cli</groupId>
         <artifactId>commons-cli</artifactId>
         <version>${ver.commons-cli}</version>
       </dependency>

       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-rdf-api</artifactId>
         <version>${ver.commons-rdf}</version>
       </dependency>

       <dependency>
         <groupId>org.roaringbitmap</groupId>
         <artifactId>RoaringBitmap</artifactId>
         <version>${ver.roaringbitmap}</version>
       </dependency>

       <dependency>
         <groupId>org.graalvm.js</groupId>
         <artifactId>js</artifactId>
         <version>${ver.graalvm}</version>
       </dependency>

       <dependency>
         <groupId>org.graalvm.js</groupId>
         <artifactId>js-scriptengine</artifactId>
         <version>${ver.graalvm}</version>
       </dependency>

       <dependency>
         <groupId>org.python</groupId>
         <artifactId>jython-standalone</artifactId>
         <version>${ver.jython}</version>
         <scope>test</scope>
       </dependency>

       <dependency>
         <groupId>org.openjdk.jmh</groupId>
         <artifactId>jmh-core</artifactId>
         <version>${ver.org.openjdk.jmh}</version>
         <scope>test</scope>
       </dependency>

       <dependency>
         <groupId>org.openjdk.jmh</groupId>
         <artifactId>jmh-generator-annprocess</artifactId>
         <version>${ver.org.openjdk.jmh}</version>
         <scope>test</scope>
       </dependency>

       <dependency>
         <groupId>org.xenei</groupId>
         <artifactId>junit-contracts</artifactId>
         <version>${ver.contract.tests}</version>
         <scope>test</scope>
         <exclusions>
           <exclusion>
             <artifactId>commons-cli</artifactId>
             <groupId>commons-cli</groupId>
           </exclusion>
           <exclusion>
             <artifactId>commons-logging</artifactId>
             <groupId>commons-logging</groupId>
           </exclusion>
         </exclusions>
       </dependency>
       
       <dependency>
         <groupId>org.xenei</groupId>
         <artifactId>contract-test-maven-plugin</artifactId>
         <version>${ver.contract.tests}</version>
         <scope>test</scope>
       </dependency>

       <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <version>${ver.mockito}</version>
         <scope>test</scope>
       </dependency>
       
       <dependency>
         <groupId>org.awaitility</groupId>
         <artifactId>awaitility</artifactId>
         <version>${ver.awaitility}</version>
       </dependency>

       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-core</artifactId>
         <version>${ver.micrometer}</version>
       </dependency>

       <dependency>
         <groupId>io.micrometer</groupId>
         <artifactId>micrometer-registry-prometheus</artifactId>
         <version>${ver.micrometer}</version>
       </dependency>

       <!-- jena-geosparql, jena-fuseki-geosparql related -->

       <dependency>
         <groupId>com.beust</groupId>
         <artifactId>jcommander</artifactId>
         <version>${ver.jcommander}</version>
       </dependency>

       <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
         <version>2.3.1</version>
       </dependency>

       <dependency>
         <groupId>org.apache.sis.core</groupId>
         <artifactId>sis-referencing</artifactId>
         <version>${ver.sis}</version>
       </dependency>

       <dependency>
         <groupId>org.locationtech.jts</groupId>
         <artifactId>jts-core</artifactId>
         <version>${ver.jts}</version>
       </dependency>

       <dependency>
         <groupId>org.locationtech.jts.io</groupId>
         <artifactId>jts-io-common</artifactId>
         <version>${ver.jts}</version>
       </dependency>

       <dependency>
         <groupId>org.jdom</groupId>
         <artifactId>jdom2</artifactId>
         <version>2.0.6.1</version>
       </dependency>

       <dependency>
         <groupId>io.github.galbiston</groupId>
         <artifactId>expiring-map</artifactId>
         <version>1.0.2</version>
       </dependency>

       <dependency>
         <groupId>io.github.galbiston</groupId>
         <artifactId>rdf-tables</artifactId>
         <version>1.0.5</version>
         <exclusions>
           <exclusion>
             <groupId>org.apache.jena</groupId>
             <artifactId>jena-tdb</artifactId>
           </exclusion>
           <exclusion>
             <groupId>org.apache.jena</groupId>
             <artifactId>jena-tdb2</artifactId>
           </exclusion>
           <exclusion>
             <groupId>com.beust</groupId>
             <artifactId>jcommander</artifactId>
           </exclusion>
           <exclusion>
             <groupId>commons-beanutils</groupId>
             <artifactId>commons-beanutils</artifactId>
           </exclusion>
         </exclusions>
       </dependency>

       <dependency>
         <groupId>commons-beanutils</groupId>
         <artifactId>commons-beanutils</artifactId>
         <version>1.9.4</version>
       </dependency>

       <!-- END jena geosparql -->

     </dependencies>

   </dependencyManagement>

   <build>
     <defaultGoal>clean test install</defaultGoal>
     <!-- Run the enforcer plugin automatically at compile time -->
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
         <executions>
           <execution>
             <id>enforce</id>
             <goals>
               <goal>enforce</goal>
             </goals>
             <configuration combine.self="override">
               <rules>
                 <dependencyConvergence />
                 <requirePluginVersions>
                   <message>Best practice is to always define plugin versions!</message>
                   <banLatest>true</banLatest>
                   <banRelease>true</banRelease>
                 </requirePluginVersions>
                 <requireReleaseDeps>
                   <message>No SNAPSHOT dependencies are allowed!</message>
                   <onlyWhenRelease>true</onlyWhenRelease>
                 </requireReleaseDeps>
                 <requireMavenVersion>
                   <version>3.8.1</version>
                 </requireMavenVersion>
               </rules>
               <fail>true</fail>
               <failFast>false</failFast>
             </configuration>
           </execution>
         </executions>
       </plugin>

       <!-- Run the RAT Plugin -->
       <!--
           To run from the command line:
           mvn apache-rat:rat \
           -Drat.excludeSubProjects=false \
           -Drat.excludesFile=build-files/rat-exclusions.txt
       -->
       <plugin>
         <groupId>org.apache.rat</groupId>
         <artifactId>apache-rat-plugin</artifactId>
         <version>0.15</version>
         <!-- 
              Run only if maven is running from this POM,
              not when run in a sub-module with this as parent.
         -->
         <inherited>false</inherited>
         <executions>
           <execution>
             <id>rat-checks</id>
             <phase>validate</phase>
             <goals>
               <goal>check</goal>
             </goals>
           </execution>
         </executions>
         <configuration>
           <excludeSubProjects>false</excludeSubProjects>
           <excludesFile>build-files/rat-exclusions.txt</excludesFile>
         </configuration>
       </plugin>
     </plugins>

     <!-- Plugin version list: https://maven.apache.org/plugins/index.html -->
     <pluginManagement>
       <plugins>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-assembly-plugin</artifactId>
           <version>3.5.0</version>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.11.0</version>
           <configuration>
             <release>${java.version}</release>
           </configuration>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>3.0.0</version>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
           <configuration>
             <archive>
               <manifestEntries>
                 <Automatic-Module-Name>${automatic.module.name}</Automatic-Module-Name>
               </manifestEntries>
             </archive>
           </configuration>
           <!-- Some modules provide test frameworks
             <executions>
               <execution>
                 <goals>
                   <goal>test-jar</goal>
                 </goals>
               </execution>
             </executions>
           -->
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-source-plugin</artifactId>
           <executions>
             <execution>
               <id>attach-sources</id>
               <goals>
                 <goal>jar-no-fork</goal>
               </goals>
             </execution>
             <!-- see jar-plugin
             <execution>
               <id>attach-sources-test</id> 
               <goals>
                 <goal>test-jar-no-fork</goal> 
               </goals>
             </execution>
             -->
           </executions>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-javadoc-plugin</artifactId>
           <version>3.5.0</version>
           <executions>
             <execution>
               <id>attach-javadocs</id>
               <goals>
                 <goal>jar</goal>
               </goals>
             </execution>
           </executions>
           <configuration>
             <!-- Fixes for Javadoc when building with Java11 -->
             <detectJavaApiLink>false</detectJavaApiLink>
             <source>${java.version}</source>

             <!-- To allow the build to keep going despite javadoc problems:
                  <failOnError>false</failOnError>
             -->
             <!-- For producible builds
                  https://maven.apache.org/guides/mini/guide-reproducible-builds.html
             -->
             <notimestamp>true</notimestamp>

             <!-- Java11 javadoc: "syntax,html" fails on things that aren't 
                  wrong and applies unrequested checks such as group "missing".
                  Java17 has fixed these and behaves as expected:
                  <doclint>syntax,html,reference</doclint>
             -->
             <doclint>none</doclint>
             <quiet>true</quiet>
             <version>true</version>
             <show>public</show>
             <encoding>UTF-8</encoding>
             <windowtitle>${project.name} ${project.version}</windowtitle>
             <doctitle>${project.name} ${project.version}</doctitle>
             <bottom>Licensed under the Apache License, Version 2.0</bottom>
             <links>
               <link>https://jena.apache.org/documentation/javadoc/jena/</link>
               <link>https://jena.apache.org/documentation/javadoc/arq/</link>
               <link>https://jena.apache.org/documentation/javadoc/tdb/</link>
               <link>https://jena.apache.org/documentation/javadoc/text/</link>
               <link>https://jena.apache.org/documentation/javadoc/rdfconnection/</link>
               <link>https://jena.apache.org/documentation/javadoc/fuseki2/</link>
               <link>https://jena.apache.org/documentation/javadoc/permissions/</link>
               <link>https://jena.apache.org/documentation/javadoc/jdbc/</link>
             </links>
             <!-- Settings for @apiNote, @implSpec and @implNote -->
             <tags>
               <tag>
                 <name>apiNote</name>
                 <placement>a</placement>
                 <head>API Note:</head>
               </tag>
               <tag>
                 <name>implSpec</name>
                 <placement>a</placement>
                 <head>Implementation Requirements:</head>
               </tag>
               <tag>
                 <name>implNote</name>
                 <placement>a</placement>
                 <head>Implementation Note:</head>
               </tag>
             </tags>
           </configuration>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
           <configuration>
             <encoding>UTF-8</encoding>
           </configuration>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-dependency-plugin</artifactId>
           <configuration>
             <overWriteReleases>false</overWriteReleases>
             <overWriteIfNewer>true</overWriteIfNewer>
           </configuration>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-enforcer-plugin</artifactId>
           <version>3.3.0</version>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.4.1</version>
         </plugin>

         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
           <version>3.3.2</version>
         </plugin>

         <!--
             Avoid the warnings and errors from m2e.
             This plugin's configuration is used to store Eclipse m2e settings only. 
             It has no influence on the Maven build itself.
         -->
         <plugin>
           <groupId>org.eclipse.m2e</groupId>
           <artifactId>lifecycle-mapping</artifactId>
           <version>1.0.0</version>
           <configuration>
             <lifecycleMappingMetadata>
               <pluginExecutions>
                 <pluginExecution>
                   <!-- 
                        Warning:
                        "maven-remote-resources-plugin (goal "process") is ignored by m2e." 
                   -->
                   <pluginExecutionFilter>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-enforcer-plugin</artifactId>
                     <versionRange>[1.0.0,)</versionRange>
                     <goals>
                       <goal>enforce</goal>
                     </goals>
                   </pluginExecutionFilter>
                   <action>
                     <ignore />
                   </action>
                 </pluginExecution>
                 <pluginExecution>
                   <!-- 
                        Warning:
                        "maven-enforcer-plugin (goal "enforce") is ignored by m2e." 
                   -->
                   <pluginExecutionFilter>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-remote-resources-plugin</artifactId>
                     <versionRange>[1.0.0,)</versionRange>
                     <goals>
                       <goal>process</goal>
                     </goals>
                   </pluginExecutionFilter>
                   <action>
                     <ignore />
                   </action>
                 </pluginExecution>
                 
                 <pluginExecution>
                   <!--
                       Error:
                       Plugin execution not covered by lifecycle configuration
                   -->
                   <pluginExecutionFilter>
                     <groupId>org.apache.rat</groupId>
                     <artifactId>apache-rat-plugin</artifactId>
                     <versionRange>[0.14,)</versionRange>
                     <goals>
                       <goal>check</goal>
                     </goals>
                   </pluginExecutionFilter>
                   <action>
                     <ignore />
                   </action>
                 </pluginExecution>

                 <pluginExecution>
                   <pluginExecutionFilter>
                     <groupId>org.xenei</groupId>
                     <artifactId>contract-test-maven-plugin</artifactId>
                     <versionRange>[0.1.5,)</versionRange>
                     <goals>
                       <goal>contract-test</goal>
                     </goals>
                   </pluginExecutionFilter>
                   <action>
                     <ignore />
                   </action>
                 </pluginExecution>
                 
               </pluginExecutions>
             </lifecycleMappingMetadata>
           </configuration>
         </plugin>

       </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <!-- <outputDirectory>${project.build.directory}/site</outputDirectory> -->

    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <configuration>
          <outputDirectory>${project.basedir}/target/surefire-reports-html</outputDirectory>
        </configuration>
      </plugin>

    </plugins>
  </reporting>

</project>
